services: api: build: context: .. dockerfile: deployment/Dockerfile.api env_file: ../server/.env environment: APP_ORIGIN: https://${APP_HOST:?Set APP_HOST to your hostname} ALLOWED_HOSTS: ${APP_HOST},api TOOLS_BASE_URL: https://${APP_HOST} COOKIE_SECURE: 'true' PUBLIC_MODE: 'true' TRUST_PROXY: 'true' STATE_DB_PATH: /data/sessions.sqlite volumes: ['session_data:/data'] restart: unless-stopped # One worker and one replica: in-memory state cannot span processes. web: build: context: .. dockerfile: deployment/Dockerfile.web args: NEXT_PUBLIC_APP_URL: https://${APP_HOST} depends_on: [api] restart: unless-stopped gateway: image: caddy:2-alpine ports: ['80:80', '443:443'] environment: APP_HOST: ${APP_HOST} volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config depends_on: [api, web] restart: unless-stopped volumes: session_data: caddy_data: caddy_config: