graphql-engine/docker-compose.yml
Samir Talwar a24cdd9b49 Prepare PostgreSQL for running tests in parallel.
This makes two changes to the Docker Compose files that we use for local testing:

1. We disable `fsync`. On my machine, this decreases the time taken to create a new database from ~5s to less than 0.1s. The trade-off is that you might lose data, which we don't care about, as this is for testing.
2. We increase the maximum number of connections from the default, 100, to 1000. This allows us to run more tests in parallel without hitting connection limits.

These changes won't have any meaningful effect for now; they simply allow us to parallelize tests against PostgreSQL in the future.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5892
GitOrigin-RevId: 5d0d0ab37fdfbf4c9e20084d3cbedf647f54a04e
2022-09-15 14:03:23 +00:00

125 lines
3.3 KiB
YAML

# 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: cimg/postgres:14.4-postgis@sha256:492a389895568e2f89a03c0c45c19350888611001123514623551a014e83a625
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:
build: ./docker-compose/sqlserver/
ports:
- "65003:1433"
environment:
ACCEPT_EULA: "Y"
SA_PASSWORD: "DockerComposePassword!"
MSSQL_SA_PASSWORD: "DockerComposePassword!"
volumes:
- mssql-data:/var/opt/mssql
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.1.6-112-g5e2f4ff465
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: