Next.js inlines NEXT_PUBLIC_* vars at build time. They must be available as ARGs during the Docker build, not just as runtime environment variables.
43 lines
1.2 KiB
YAML
43 lines
1.2 KiB
YAML
services:
|
|
backend:
|
|
build:
|
|
context: ./backend
|
|
expose:
|
|
- "8080"
|
|
environment:
|
|
- PORT=8080
|
|
- DATABASE_URL=${DATABASE_URL}
|
|
- SUPABASE_URL=${SUPABASE_URL}
|
|
- SUPABASE_ANON_KEY=${SUPABASE_ANON_KEY}
|
|
- SUPABASE_SERVICE_KEY=${SUPABASE_SERVICE_KEY}
|
|
- SUPABASE_JWT_SECRET=${SUPABASE_JWT_SECRET}
|
|
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8080/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 5s
|
|
|
|
frontend:
|
|
build:
|
|
context: ./frontend
|
|
args:
|
|
NEXT_PUBLIC_SUPABASE_URL: ${SUPABASE_URL}
|
|
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${SUPABASE_ANON_KEY}
|
|
expose:
|
|
- "3000"
|
|
depends_on:
|
|
backend:
|
|
condition: service_healthy
|
|
environment:
|
|
- API_URL=http://backend:8080
|
|
- NEXT_PUBLIC_SUPABASE_URL=${SUPABASE_URL}
|
|
- NEXT_PUBLIC_SUPABASE_ANON_KEY=${SUPABASE_ANON_KEY}
|
|
healthcheck:
|
|
test: ["CMD", "node", "-e", "fetch('http://localhost:3000').then(r=>{if(!r.ok)throw r.status;process.exit(0)}).catch(()=>process.exit(1))"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 10s
|