services: backend: build: context: . dockerfile: backend/Dockerfile ports: - "4016:4016" environment: - NODE_ENV=${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://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-SHELL", "node -e \"fetch('http://localhost:4016/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\""] interval: 30s timeout: 5s retries: 3 web: build: context: . dockerfile: web/Dockerfile args: NEXT_PUBLIC_NOTES_API_URL: ${NEXT_PUBLIC_NOTES_API_URL:-http://localhost:4016/api} NEXT_PUBLIC_PLATFORM_SERVICE_URL: ${NEXT_PUBLIC_PLATFORM_SERVICE_URL:-http://localhost:4003/api} 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://localhost:4016/api} - NEXT_PUBLIC_PLATFORM_SERVICE_URL=${NEXT_PUBLIC_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