Mechanical fixes per docker-build-optimization-roadmap.md §6.D.2:
- Dockerfile: add # syntax=docker/dockerfile:1.7 directive (A2)
- Dockerfile: declare ARG GITEA_NPM_OWNER alongside GITEA_NPM_HOST (F14)
- Dockerfile: wildcard COPY .docker-deps* (A5-2, B3)
- Dockerfile (web): glob enumerated config COPYs (F11/F13) where applicable
- docker-compose.yml: healthcheck localhost → 127.0.0.1 (F12) where applicable
- docker-compose.yml: pass GITEA_NPM_OWNER build arg (F14) where applicable
- .npmrc.docker: rewrite with canonical ${GITEA_NPM_HOST}/${GITEA_NPM_OWNER}
template (F4/F14) if hardcoded
- .gitignore: ensure *.bak rule (B3)
- .docker-deps/.gitkeep: ensure exists for wildcard COPY
Verified: docker-doctor exits PASS (warnings only, ADR-0001 expected).
Refs: docker-build-optimization-roadmap.md §Phase D.2
78 lines
3.6 KiB
YAML
78 lines
3.6 KiB
YAML
services:
|
|
backend:
|
|
container_name: notelett-backend
|
|
build:
|
|
context: .
|
|
dockerfile: backend/Dockerfile
|
|
ports:
|
|
- "4016:4016"
|
|
environment:
|
|
NODE_ENV: development
|
|
PORT: 4016
|
|
HOST: 0.0.0.0
|
|
PRODUCT_ID: notelett
|
|
SERVICE_NAME: notelett-backend
|
|
JWT_SECRET: ${JWT_SECRET:-dev-secret-change-me-at-least-32-characters}
|
|
COSMOS_ENDPOINT: ${COSMOS_ENDPOINT:-}
|
|
COSMOS_KEY: ${COSMOS_KEY:-}
|
|
COSMOS_DATABASE: ${COSMOS_DATABASE:-bytelyst}
|
|
DB_PROVIDER: ${DB_PROVIDER:-memory}
|
|
CORS_ORIGIN: ${CORS_ORIGIN:-http://127.0.0.1:3000}
|
|
PLATFORM_SERVICE_URL: ${PLATFORM_SERVICE_URL:-http://127.0.0.1:4003}
|
|
EXTRACTION_SERVICE_URL: ${EXTRACTION_SERVICE_URL:-http://127.0.0.1:4005}
|
|
MCP_SERVER_URL: ${MCP_SERVER_URL:-http://127.0.0.1:4007}
|
|
TELEMETRY_ENABLED: ${TELEMETRY_ENABLED:-false}
|
|
FEATURE_FLAGS_ENABLED: ${FEATURE_FLAGS_ENABLED:-false}
|
|
FIELD_ENCRYPT_ENABLED: ${FIELD_ENCRYPT_ENABLED:-false}
|
|
FIELD_ENCRYPT_KEY_PROVIDER: ${FIELD_ENCRYPT_KEY_PROVIDER:-memory}
|
|
LLM_PROVIDER: ${LLM_PROVIDER:-mock}
|
|
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
|
|
OPENAI_BASE_URL: ${OPENAI_BASE_URL:-}
|
|
AZURE_OPENAI_ENDPOINT: ${AZURE_OPENAI_ENDPOINT:-}
|
|
AZURE_OPENAI_API_KEY: ${AZURE_OPENAI_API_KEY:-}
|
|
LLM_DEFAULT_MODEL: ${LLM_DEFAULT_MODEL:-gpt-4o-mini}
|
|
LLM_VISION_MODEL: ${LLM_VISION_MODEL:-gpt-4o}
|
|
LLM_EMBEDDING_MODEL: ${LLM_EMBEDDING_MODEL:-text-embedding-3-small}
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "node -e \"fetch('http://127.0.0.1:4016/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\""]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
|
|
web:
|
|
container_name: notelett-web
|
|
build:
|
|
context: .
|
|
dockerfile: web/Dockerfile
|
|
args:
|
|
# NEXT_PUBLIC_* values are baked into the Next.js bundle at build
|
|
# time, so they MUST be passed as build args, not just runtime
|
|
# environment. The defaults below target a local stack; override
|
|
# via the same-named env var on the host (the value is captured
|
|
# by docker compose's ${VAR:-default} substitution).
|
|
NEXT_PUBLIC_NOTES_API_URL: ${NEXT_PUBLIC_NOTES_API_URL:-http://127.0.0.1:4016/api}
|
|
NEXT_PUBLIC_PLATFORM_SERVICE_URL: ${NEXT_PUBLIC_PLATFORM_SERVICE_URL:-http://127.0.0.1:4003/api}
|
|
NEXT_PUBLIC_EXTRACTION_SERVICE_URL: ${NEXT_PUBLIC_EXTRACTION_SERVICE_URL:-http://127.0.0.1:4005}
|
|
NEXT_PUBLIC_MCP_SERVER_URL: ${NEXT_PUBLIC_MCP_SERVER_URL:-http://127.0.0.1:4007/api}
|
|
NEXT_PUBLIC_DIAGNOSTICS_URL: ${NEXT_PUBLIC_DIAGNOSTICS_URL:-http://127.0.0.1:3000}
|
|
NEXT_PUBLIC_PRODUCT_NAME: ${NEXT_PUBLIC_PRODUCT_NAME:-NoteLett}
|
|
NEXT_PUBLIC_PRODUCT_ID: ${NEXT_PUBLIC_PRODUCT_ID:-notelett}
|
|
NEXT_PUBLIC_TELEMETRY_TRANSPORT: ${NEXT_PUBLIC_TELEMETRY_TRANSPORT:-fetch}
|
|
ports:
|
|
- "3000:3045"
|
|
environment:
|
|
NODE_ENV: production
|
|
NEXT_PUBLIC_PRODUCT_NAME: NoteLett
|
|
NEXT_PUBLIC_PRODUCT_ID: notelett
|
|
NEXT_PUBLIC_NOTES_API_URL: ${NEXT_PUBLIC_NOTES_API_URL:-http://127.0.0.1:4016/api}
|
|
NEXT_PUBLIC_PLATFORM_SERVICE_URL: ${NEXT_PUBLIC_PLATFORM_SERVICE_URL:-http://127.0.0.1:4003/api}
|
|
NEXT_PUBLIC_EXTRACTION_SERVICE_URL: ${EXTRACTION_SERVICE_URL:-http://127.0.0.1:4005}
|
|
NEXT_PUBLIC_MCP_SERVER_URL: ${MCP_SERVER_URL:-http://127.0.0.1:4007}/api
|
|
NEXT_PUBLIC_DIAGNOSTICS_URL: ${DIAGNOSTICS_URL:-http://127.0.0.1:3000}
|
|
NEXT_PUBLIC_TELEMETRY_TRANSPORT: fetch
|
|
depends_on:
|
|
backend:
|
|
condition: service_healthy
|
|
restart: unless-stopped
|