services: api: image: ${API_IMAGE:-jyotisha-api:local} build: context: .. dockerfile: deploy/railway-api.Dockerfile restart: unless-stopped env_file: - ${APP_ENV_FILE:-../.env.production} environment: PORT: 5200 JYOTISH_ALLOWED_HOSTS: localhost,127.0.0.1,::1,api expose: - "5200" healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:5200/api/health', timeout=3)"] interval: 30s timeout: 5s retries: 5 start_period: 30s start_interval: 1s web: image: ${WEB_IMAGE:-jyotisha-web:local} build: context: .. dockerfile: deploy/railway-web.Dockerfile args: NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL:-} NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY:-} restart: unless-stopped env_file: - ${APP_ENV_FILE:-../.env.production} environment: GITHUB_SHA: ${GITHUB_SHA} PORT: 3000 JYOTISH_API_BASE: http://api:5200 expose: - "3000" healthcheck: test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:3000/api/health').then(r=>{if(!r.ok)process.exit(1)})"] interval: 30s timeout: 5s retries: 5 start_period: 30s start_interval: 1s depends_on: api: condition: service_healthy caddy: image: caddy:2-alpine restart: unless-stopped environment: SITE_ADDRESS: ${SITE_ADDRESS:-https://jyotisha.chat} ports: - "80:80" - "443:443" - "443:443/udp" volumes: - ${CADDYFILE_PATH:-./Caddyfile}:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config depends_on: web: condition: service_healthy volumes: caddy_data: caddy_config: