Files
pastel-ui/docker-compose.yml
valknarness 27ff7f7ffd feat: implement runtime configuration with API proxy pattern
Replace build-time NEXT_PUBLIC_* environment variables with server-side
runtime configuration. This allows changing the Pastel API URL without
rebuilding the Docker image.

**Changes:**
- Add Next.js API proxy route at /api/pastel/[...path] for server-side proxying
- Update API client to use proxy endpoint instead of direct API URL
- Replace NEXT_PUBLIC_API_URL with server-side PASTEL_API_URL
- Remove build arguments from Dockerfile (no longer needed)
- Simplify docker-compose.yml to use runtime environment variables only
- Update all .env files to reflect new configuration approach
- Add comprehensive DOCKER.md documentation

**Benefits:**
- No rebuild required to change API URL
- Same image works across all environments (dev/staging/prod)
- Better security (API URL not exposed in client bundle)
- Simpler deployment and configuration management

**Migration:**
Old: NEXT_PUBLIC_API_URL (build-time, embedded in bundle)
New: PASTEL_API_URL (runtime, read by server proxy)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 16:05:55 +01:00

44 lines
1015 B
YAML

version: '3.8'
services:
pastel-ui:
build:
context: .
dockerfile: Dockerfile
image: ghcr.io/valknarness/pastel-ui:latest
container_name: pastel-ui
ports:
- "3000:3000"
environment:
- NODE_ENV=production
# Runtime configuration - can be changed without rebuilding
- PASTEL_API_URL=${PASTEL_API_URL:-http://pastel-api:3001}
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
pastel-api:
image: ghcr.io/valknarness/pastel-api:latest
container_name: pastel-api
ports:
- "3001:3001"
environment:
- RUST_LOG=info
- PORT=3001
- HOST=0.0.0.0
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3001/api/v1/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
networks:
default:
name: pastel-network