services: # Next.js Application app: build: context: . dockerfile: Dockerfile ports: - '${PORT:-3000}:3000' environment: NODE_ENV: production NEXT_PUBLIC_SITE_URL: '${NEXT_PUBLIC_SITE_URL}' NEXT_PUBLIC_CONVEX_URL: '${NEXT_PUBLIC_CONVEX_URL}' NEXT_PUBLIC_CONVEX_SITE_URL: '${NEXT_PUBLIC_CONVEX_SITE_URL}' CONVEX_SELF_HOSTED_URL: '${CONVEX_SELF_HOSTED_URL}' CONVEX_SELF_HOSTED_ADMIN_KEY: '${CONVEX_SELF_HOSTED_ADMIN_KEY}' depends_on: - backend # Convex Backend backend: image: 'ghcr.io/get-convex/convex-backend:latest' stop_grace_period: 10s stop_signal: SIGINT ports: - '${PORT:-3210}:3210' - '${SITE_PROXY_PORT:-3211}:3211' volumes: - 'data:/convex/data' environment: INSTANCE_NAME: '${INSTANCE_NAME}' INSTANCE_SECRET: '${INSTANCE_SECRET}' CONVEX_CLOUD_ORIGIN: '${SERVICE_URL_BACKEND}' CONVEX_SITE_ORIGIN: '${SERVICE_URL_BACKEND_SITE}' DO_NOT_REQUIRE_SSL: '${DO_NOT_REQUIRE_SSL:-true}' DATABASE_URL: '${DATABASE_URL:-}' healthcheck: test: ['CMD-SHELL', 'curl -f http://localhost:3210/version'] interval: 5s start_period: 10s timeout: 5s retries: 10 # Convex Dashboard dashboard: image: 'ghcr.io/get-convex/convex-dashboard:latest' stop_grace_period: 10s stop_signal: SIGINT ports: - '${DASHBOARD_PORT:-6791}:6791' environment: PORT: '6791' NEXT_PUBLIC_DEPLOYMENT_URL: '${SERVICE_URL_BACKEND}' depends_on: backend: condition: service_healthy volumes: data: null