graphql-engine/v3/docker-compose.yaml
Samir Talwar e931a391eb Various improvements to the Docker Compose services. (#383)
I got frustrated by the lack of useful output when services failed to
start in CI, so I thought I'd mess around.

I made some changes so that:

1. we wait for services with health checks to report as healthy,
2. we do not rebuild the engine or custom connector when they start,
3. the health checks work (apart from ndc-postgres, which will come
later), and
4. we use environment variables rather than command-line arguments where
possible.

I have also renamed the "agent" binary to "custom-connector", matching
its crate, because it was driving me a little crazy.

V3_GIT_ORIGIN_REV_ID: 8d672b0b25438b54d47368ce82cd236cfdd4e554
2024-03-21 16:49:38 +00:00

139 lines
3.3 KiB
YAML

version: "3.9"
services:
postgres:
image: postgis/postgis:16-3.4
platform: linux/amd64
restart: always
command:
- -F # turn fsync off for speed
- -N 1000 # increase max connections from 100 so we can run more HGEs
ports:
- 64001:5432
environment:
POSTGRES_PASSWORD: "password"
volumes:
- type: volume
source: postgres
target: /var/lib/postgresql/data
- type: bind
source: ./crates/engine/tests/db_definition.sql
target: /docker-entrypoint-initdb.d/db_definition.sql
read_only: true
healthcheck:
test:
- CMD-SHELL
- psql -U "$${POSTGRES_USER:-postgres}" < /dev/null && sleep 5 && psql -U "$${POSTGRES_USER:-postgres}" < /dev/null
start_period: 5s
interval: 5s
timeout: 10s
retries: 20
reference_agent:
build: https://github.com/hasura/ndc-spec.git#v0.1.0-rc.18
ports:
- 8102:8100
auth_hook:
build: ./crates/hasura-authn-webhook/dev-auth-webhook
ports:
- "3050:3050"
jaeger:
image: jaegertracing/all-in-one:1.37
restart: always
ports:
- 5775:5775/udp
- 6831:6831/udp
- 6832:6832/udp
- 5778:5778
- 4002:16686
- 14250:14250
- 14268:14268
- 14269:14269
- 4317:4317 # OTLP gRPC
- 4318:4318 # OTLP HTTP
- 9411:9411
environment:
COLLECTOR_OTLP_ENABLED: "true"
COLLECTOR_ZIPKIN_HOST_PORT: "9411"
postgres_connector:
image: ghcr.io/hasura/ndc-postgres:dev-main-0452625e7
command:
- serve
- --configuration
- /config.json
- "--otlp-endpoint"
- http://jaeger:4317
ports:
- 8100:8100
volumes:
- ./crates/engine/tests/pg_ndc_config.json:/config.json
depends_on:
postgres:
condition: service_healthy
custom_connector:
build:
context: .
target: built
entrypoint:
- ./target/release/custom-connector
ports:
- 8101:8101
healthcheck:
test: curl -fsS http://localhost:8101/schema
start_period: 5s
interval: 5s
timeout: 10s
retries: 20
engine:
build:
context: .
target: built
entrypoint:
- ./target/release/engine
environment:
- METADATA_PATH
- AUTHN_CONFIG_PATH
- OLTP_ENDPOINT=http://jaeger:4317
ports:
# Binding to localhost:3001 avoids conflict with dev_setup
- 3001:3000
depends_on:
reference_agent:
condition: service_started
jaeger:
condition: service_started
auth_hook:
condition: service_started
dev_setup:
build:
context: .
target: builder
volumes:
- ./crates/tracing-util:/app/tracing-util
- ./crates/lang-graphql:/app/lang-graphql
- ./crates/open-dds:/app/open-dds
- ./crates/engine:/app/engine
- ./crates/hasura-authn-core:/app/hasura-authn-core
- ./crates/hasura-authn-webhook:/app/hasura-authn-webhook
ports:
- 3000:3000
depends_on:
jaeger:
condition: service_started
auth_hook:
condition: service_started
postgres:
condition: service_healthy
postgres_connector:
condition: service_started
custom_connector:
condition: service_healthy
volumes:
postgres: