2467e23ef6
Now that Docker for macOS supports using Rosetta for x86/amd64 emulation, we no longer need to use the `azure-sql-edge` image. We can always use the official `mcr.microsoft.com/mssql/server` one. This also means that we no longer need the separate healthcheck container, because the official image ships with `sqlcmd`. When this is merged, you will need to ensure you have enabled Rosetta emulation in the Docker settings to test against SQL Server on macOS. This requires macOS 13 (Ventura). PR-URL: https://github.com/hasura/graphql-engine-mono/pull/10139 GitOrigin-RevId: 2225bf5f4c6d3632da1f29b2229c9b04ead5e34c |
||
---|---|---|
.. | ||
DataSources | ||
.gitignore | ||
default_metadata.json | ||
docker-compose.template.yml | ||
README.md |
Hasura Frontend Docker Setup
The docker-compose.template.yml
file in this directory is a starter template docker-compose.yml
file to create several local dbs, and relevant services for local Hasura frontend development. In addition, the aim for this will be to automatically populate db's with demo data as part of the initialization process.
There are a few basic steps:
Before beginning, create a docker-compose.yml
file in this directory and copy and paste the contents of docker-compose.template.yml
into this file. Since the docker-compose.yml
is not part of source control, you may freely alter it to fit your needs.
- Run
docker compose up -d
from this directory. - Enter the BigQuery service account private key for the BigQuery source. Property is,
configuration.service_account.private_key
in thedefault_metadata.json
file. Alternatively, you can remove this section of the json file. - Go to Settings > Metadata Actions -- or just click here (you will need to enter your admin secret:
moocow
) - Select
Import Metadata
and selectdefault_metadata.json
Note: By default, no tables are tracked. This is intentional as the Chinook database is being used for most of these and things can get a bit confusing if they are all tracked at once. I would recommend either using namespaces, or just track as needed.
BigQuery
If you would like to have a working BigQuery database first obtain the BigQuery service account key JSON data (if you don't know, then ask). Then, enter the private key in your default_metadata.json
.
You may also need to flip the feature flags here to see everything in your local instance correctly.
MSSQL / SQL Server
In order to initialize and populate a MSSQL demo database automatically, we making use of the mssql-init
container. This image runs a few commands against the mssql
image to create the demo data.
This scripting is done in docker/DataSources/mssql/run-initialization.sh
.
After run-initialization.sh
attempts to execute docker/DataSources/mssql/mssql-setup.sql
, it creates the file docker/DataSources/mssql/REMOVE_ME_TO_RERUN_SETUP.txt
. The presence of this .txt
file will prevent the mssql-setup.sql
script from executing again if the container is started again.
To force it to re-run, just delete /DataSources/mssql/REMOVE_ME_TO_RERUN_SETUP.txt
and restart your container. Because /DataSources/mssql
is mounted as a volume, it uses the local filesystem.
MongoDB
The Docker compose file starts a Mongo database with a single collection called mycollection
. This collection is defined with a json schema file, since for the moment the Mongo agent can only track collections with a schema.
Database
The docker-compose file will start a Mongo database. You can connect to it with the following command:
mongosh "mongodb://host.docker.internal:27017"
For now the agent only works with databases without authentication, so keep that in mind if you're planning to use a different Mongo database than the one provided in docker-compose.yml
Agent
For the moment we don't have a docker image for the Mongo agent, but you can start it locally with the following steps:
- Install cabal (Haskell build tools)
- Go to the
pro/dc-agents/mongodb
directory cabal build
cabal update
cabal run
- Add an agent. Set URL to
http://host.docker.internal:8888
. Replace withlocalhost
if your OS does not supporthost.docker.internal
- Add a Mongo database
- Set URL to
host.docker.internal:27017
- Set DB to
sample
- Set URL to
Using Different HGE Images
You may need to replace the image:
in the compose file with a different image. You can do this by downloading an image, and running docker load -i <the new image>
. Once it's loaded copy the image name into the compose. Here's an example using a CI built image:
image: hasura/graphql-engine:dev-e3bc433-main.ubuntu.arm64