services: backend: build: context: . dockerfile: backend/Dockerfile ports: - "4016:4016" environment: - NODE_ENV=production - PORT=4016 - HOST=0.0.0.0 - PRODUCT_ID=notelett - SERVICE_NAME=notelett-backend - JWT_SECRET=${JWT_SECRET:-dev-secret-change-me} - COSMOS_ENDPOINT=${COSMOS_ENDPOINT:-} - COSMOS_KEY=${COSMOS_KEY:-} - COSMOS_DATABASE=${COSMOS_DATABASE:-bytelyst} - DB_PROVIDER=${DB_PROVIDER:-memory} - CORS_ORIGIN=${CORS_ORIGIN:-http://localhost:3000} - PLATFORM_SERVICE_URL=${PLATFORM_SERVICE_URL:-http://localhost:4003} - EXTRACTION_SERVICE_URL=${EXTRACTION_SERVICE_URL:-http://localhost:4005} - MCP_SERVER_URL=${MCP_SERVER_URL:-http://localhost: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", "wget", "--spider", "-q", "http://localhost:4016/health"] interval: 30s timeout: 5s retries: 3 web: build: context: . dockerfile: web/Dockerfile ports: - "3000:3000" environment: - NODE_ENV=production - NEXT_PUBLIC_PRODUCT_NAME=NoteLett - NEXT_PUBLIC_PRODUCT_ID=notelett - NEXT_PUBLIC_NOTES_API_URL=http://backend:4016/api - NEXT_PUBLIC_PLATFORM_SERVICE_URL=${PLATFORM_SERVICE_URL:-http://localhost:4003}/api - NEXT_PUBLIC_EXTRACTION_SERVICE_URL=${EXTRACTION_SERVICE_URL:-http://localhost:4005} - NEXT_PUBLIC_MCP_SERVER_URL=${MCP_SERVER_URL:-http://localhost:4007}/api - NEXT_PUBLIC_DIAGNOSTICS_URL=${DIAGNOSTICS_URL:-http://localhost:3000} - NEXT_PUBLIC_TELEMETRY_TRANSPORT=fetch depends_on: backend: condition: service_healthy restart: unless-stopped