graphql-engine/v3/docker-compose.yaml
Daniel Harvey e3c0cb4e1a Use Postgres in readme (#546)
<!-- Thank you for submitting this PR! :) -->

## Description

The getting starting instructions for Docker don't work because they use
the reference agent sample metadata from `open-dds` crate. I managed to
get the metadata building but for some reason I get connection errors
when running the queries (cannot reach the reference agent).

I would like to investigate this further, but in the meantime, this
updates the readme to use the metadata from the tests, which should at
least get them up and running with a working GraphiQL / Jaeger.

V3_GIT_ORIGIN_REV_ID: d0dc81560a068b960104228f89ee7e7d483a58d9
2024-05-02 21:40:37 +00:00

160 lines
4.1 KiB
YAML

# this Docker Compose file is used for local testing
services:
engine:
build:
dockerfile: debug.Dockerfile
entrypoint:
- ./bin/engine
environment:
- METADATA_PATH
- AUTHN_CONFIG_PATH
- OTLP_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
volumes:
- ./auth_config.json:/app/auth_config.json
- ./crates/engine/tests/schema.json:/app/crates/engine/tests/schema.json
- ./crates/open-dds/examples/reference.json:/app/crates/open-dds/examples/reference.json
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/01-db_definition.sql
read_only: true
- type: bind
source: ./crates/engine/tests/chinook-postgres.sql
target: /docker-entrypoint-initdb.d/02-chinook.sql
read_only: true
- type: bind
source: ./crates/engine/tests/finish.sql
target: /docker-entrypoint-initdb.d/03-finish.sql
read_only: true
healthcheck:
test:
- CMD-SHELL
- psql -U "$${POSTGRES_USER:-postgres}" finished < /dev/null
start_period: 2s
interval: 2s
timeout: 1s
retries: 5
reference_agent:
build: https://github.com/hasura/ndc-spec.git#v0.1.2
ports:
- 8102:8100
auth_hook:
build:
dockerfile: dev-auth-webhook.Dockerfile
environment:
OTLP_ENDPOINT: "http://jaeger:4317"
RUST_LOG: debug
ports:
- "3050:3050"
depends_on:
jaeger:
condition: service_started
jaeger:
image: jaegertracing/all-in-one:1.55
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
ports:
- 8080:8080
environment:
CONNECTION_URI: "postgresql://postgres:password@postgres"
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: "http://jaeger:4317"
OTEL_SERVICE_NAME: "ndc-postgres"
volumes:
- type: bind
source: ./crates/engine/tests/ndc-postgres-configuration
target: /etc/connector
read_only: true
depends_on:
postgres:
condition: service_healthy
jaeger:
condition: service_started
custom_connector:
build:
dockerfile: debug.Dockerfile
entrypoint:
- ./bin/custom-connector
ports:
- 8101:8101
healthcheck:
test: curl -fsS http://localhost:8101/schema
start_period: 5s
interval: 5s
timeout: 10s
retries: 20
dev_setup:
build:
context: .
target: builder
volumes:
- ./crates/utils/tracing-util:/app/tracing-util
- ./crates/lang-graphql:/app/lang-graphql
- ./crates/open-dds:/app/open-dds
- ./crates/engine:/app/engine
- ./crates/auth/hasura-authn-core:/app/hasura-authn-core
- ./crates/auth/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_healthy
custom_connector:
condition: service_healthy
volumes:
postgres: