services: pocketbase: build: context: ./pocketbase container_name: alloy-pocketbase restart: unless-stopped ports: - "${PB_PORT:-8090}:8090" environment: PB_ADMIN_EMAIL: ${POCKETBASE_ADMIN_EMAIL:?POCKETBASE_ADMIN_EMAIL is required} PB_ADMIN_PASSWORD: ${POCKETBASE_ADMIN_PASSWORD:?POCKETBASE_ADMIN_PASSWORD is required} volumes: - pocketbase_data:/pb/pb_data healthcheck: test: ["CMD", "wget", "-qO-", "http://127.0.0.1:8090/api/health"] interval: 15s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: alloy-redis restart: unless-stopped command: ["redis-server", "--save", "60", "1", "--appendonly", "no"] volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 15s timeout: 3s retries: 5 api: build: context: . args: APP: api target: api-runtime container_name: alloy-api restart: unless-stopped depends_on: pocketbase: condition: service_healthy redis: condition: service_healthy ports: - "${API_PORT:-3001}:3001" environment: NODE_ENV: production API_HOST: 0.0.0.0 API_PORT: 3001 LOG_LEVEL: ${LOG_LEVEL:-info} POCKETBASE_URL: http://pocketbase:8090 POCKETBASE_ADMIN_EMAIL: ${POCKETBASE_ADMIN_EMAIL:?POCKETBASE_ADMIN_EMAIL is required} POCKETBASE_ADMIN_PASSWORD: ${POCKETBASE_ADMIN_PASSWORD:?POCKETBASE_ADMIN_PASSWORD is required} REDIS_URL: redis://redis:6379 PUBLIC_SITE_URL: ${PUBLIC_SITE_URL:-http://localhost:3000} PUBLIC_API_URL: ${PUBLIC_API_URL:-http://localhost:3001} PUBLIC_DOCS_URL: ${PUBLIC_DOCS_URL:-http://localhost:3000/docs} METRICS_ENABLED: "true" web: build: context: . args: APP: web target: web-runtime container_name: alloy-web restart: unless-stopped depends_on: - api ports: - "${WEB_PORT:-3000}:3000" environment: NODE_ENV: production PORT: 3000 HOSTNAME: 0.0.0.0 NEXT_PUBLIC_SITE_URL: ${PUBLIC_SITE_URL:-http://localhost:3000} NEXT_PUBLIC_API_URL: ${PUBLIC_API_URL:-http://localhost:3001} NEXT_PUBLIC_DOCS_URL: ${PUBLIC_DOCS_URL:-http://localhost:3000/docs} NEXT_PUBLIC_POCKETBASE_URL: ${PUBLIC_POCKETBASE_URL:-http://localhost:8090} NEXT_PUBLIC_INTERNAL_API_URL: http://api:3001 volumes: pocketbase_data: redis_data: