learning_ai_notes/docker-compose.yml

65 lines
2.7 KiB
YAML

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