# This file starts up the necessary database services to test # graphql-engine. # # Run the following to get started: # # docker compose up -d # # That will start up services in the background. To take them down, # you have to run # # docker compose down # # If you changed DB init scripts, then you should also run: # # docker compose down --volumes # # That'll delete the volumes. Otherwise e.g. PostgreSQL will skip # initializing if a DB already exists. # # If you omit -d, it'll run them all in the foreground, then you can # stop them with your usual control-C terminal command. # # Facts: # # * The SERVICE PORTS numbering start at 65001, 65002, etc. to avoid # bother existing instances of databases. # # * The login credentials are, where possible, all "hasura" to avoid # unnecessary mental overhead. version: "3.6" services: mariadb: image: mariadb:10.6.4-focal@sha256:c014ba1efc5dbd711d0520c7762d57807f35549de3414eb31e942a420c8a2ed2 ports: - "65001:3306" environment: MARIADB_USER: "hasura" MARIADB_PASSWORD: "hasura" MARIADB_DATABASE: "hasura" MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: "true" volumes: - mariadb-data:/var/lib/mysql postgres: image: postgis/postgis:15beta4-3.3-alpine command: - -F # turn fsync off for speed - -N 1000 # increase max connections from 100 so we can run more HGEs ports: - "65002:5432" environment: POSTGRES_USER: "hasura" POSTGRES_PASSWORD: "hasura" POSTGRES_DB: "hasura" volumes: - postgres-data:/var/lib/postgresql/data - ./docker-compose/postgres/init.sh:/docker-entrypoint-initdb.d/init-hasura.sh:ro sqlserver: image: ${MSSQL_IMAGE:-mcr.microsoft.com/mssql/server:2019-latest} ports: - "65003:1433" environment: ACCEPT_EULA: "Y" SA_PASSWORD: "DockerComposePassword!" MSSQL_SA_PASSWORD: "DockerComposePassword!" volumes: - mssql-data:/var/opt/mssql # Separated from the `sqlserver` container so we can use the `mssql-tools` image to run `sqlcmd`. # `sqlcmd` is not available in the `azure-sql-edge` image on arm64, which we use for testing on macOS. sqlserver-init: image: mcr.microsoft.com/mssql-tools command: - /init.sh environment: SERVER_HOST: sqlserver volumes: - ./docker-compose/sqlserver-init/init.sh:/init.sh - ./docker-compose/sqlserver-init/init.sql:/init.sql citus: image: citusdata/citus:10.1@sha256:7e497e5ca18d7f2ae2a66c1d5d676b548e9221b7e6294adfb03006adad85502c ports: - "65004:5432" environment: POSTGRES_USER: "hasura" POSTGRES_PASSWORD: "hasura" POSTGRES_DB: "hasura" volumes: - citus-data:/var/lib/postgresql/data - ./docker-compose/postgres/init.sh:/docker-entrypoint-initdb.d/init-hasura.sh:ro cockroach: image: us-docker.pkg.dev/cockroach-cloud-images/cockroachdb/cockroach:v22.2.0-beta.2-218-ga7ecaa82cf command: - start-single-node - --insecure - --accept-sql-without-tls ports: - "65008:26257" environment: COCKROACH_USER: "root" COCKROACH_DATABASE: "hasura" volumes: - cockroach-data:/cockroach/cockroach-data - ./docker-compose/cockroach/init.sh:/docker-entrypoint-initdb.d/init-hasura.sh:ro dc-reference-agent: build: context: ./dc-agents dockerfile: ./Dockerfile-reference ports: - "65005:8100" dc-sqlite-agent: build: context: ./dc-agents dockerfile: ./Dockerfile-sqlite ports: - "65007:8100" volumes: - "./dc-agents/sqlite/test/db.chinook.sqlite:/db.chinook.sqlite" environment: METRICS: y PRETTY_PRINT_LOGS: y LOG_LEVEL: debug volumes: citus-data: mariadb-data: mssql-data: postgres-data: cockroach-data: