services: auth-service: environment: SMS_PROVIDER: ${SMS_PROVIDER:?set SMS_PROVIDER in production env} JWT_SECRET_KEY: ${JWT_SECRET_KEY:?set JWT_SECRET_KEY in production env} ADMIN_MOBILE: ${ADMIN_MOBILE:?set ADMIN_MOBILE in production env} sms-worker: environment: SMS_PROVIDER: ${SMS_PROVIDER:?set SMS_PROVIDER in production env} KAVENEGAR_API_KEY: ${KAVENEGAR_API_KEY:-} SMS_IR_API_KEY: ${SMS_IR_API_KEY:-} demo-app: environment: DEMO_ENABLE_DEBUG_OTP: "false" depends_on: auth-service: condition: service_healthy caddy: image: caddy:2.8-alpine restart: unless-stopped ports: - "80:80" - "443:443" - "443:443/udp" volumes: - ./deploy/caddy/Caddyfile:/etc/caddy/Caddyfile:ro - caddy-data:/data - caddy-config:/config depends_on: demo-app: condition: service_healthy healthcheck: test: ["CMD", "caddy", "validate", "--config", "/etc/caddy/Caddyfile"] interval: 30s timeout: 5s retries: 3 volumes: caddy-data: caddy-config: