services: database: image: postgres:17-alpine environment: POSTGRES_DB: ariadne POSTGRES_USER: ariadne_admin POSTGRES_PASSWORD: ariadne_admin healthcheck: test: ["CMD-SHELL", "pg_isready -U ariadne_admin -d ariadne"] interval: 2s timeout: 3s retries: 15 ports: - "127.0.0.1:15432:5432" volumes: - ariadne-postgres:/var/lib/postgresql/data - ./deploy/postgres/init:/docker-entrypoint-initdb.d:ro migrate: build: context: . entrypoint: ["/ariadne-migrate"] environment: ARIADNE_ENVIRONMENT: development ARIADNE_DATABASE_MIGRATION_URL: postgres://ariadne_migrator:ariadne_migrator@database:5432/ariadne?sslmode=disable ARIADNE_DATABASE_RUNTIME_ROLE: ariadne_runtime ARIADNE_DATABASE_IDENTITY_ROLE: ariadne_identity ARIADNE_MIGRATION_LOCK_TIMEOUT: 30s depends_on: database: condition: service_healthy restart: "no" server: build: context: . environment: ARIADNE_ENVIRONMENT: development ARIADNE_HTTP_ADDRESS: :8080 ARIADNE_DATABASE_URL: postgres://ariadne_runtime:ariadne_runtime@database:5432/ariadne?sslmode=disable ARIADNE_DATABASE_IDENTITY_URL: postgres://ariadne_identity:ariadne_identity@database:5432/ariadne?sslmode=disable ARIADNE_DATABASE_RUNTIME_ROLE: ariadne_runtime ARIADNE_DATABASE_IDENTITY_ROLE: ariadne_identity depends_on: migrate: condition: service_completed_successfully ports: - "127.0.0.1:18080:8080" volumes: ariadne-postgres: