110 lines
3.7 KiB
YAML
110 lines
3.7 KiB
YAML
x-defaults: &defaults
|
|
restart: unless-stopped
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: ${MULTICA_LOG_MAX_SIZE:-100m}
|
|
max-file: '${MULTICA_LOG_MAX_FILE:-3}'
|
|
|
|
services:
|
|
multica-postgres:
|
|
<<: *defaults
|
|
image: ${GLOBAL_REGISTRY:-}pgvector/pgvector:${MULTICA_PGVECTOR_VERSION:-pg17}
|
|
environment:
|
|
- TZ=${TZ:-UTC}
|
|
- POSTGRES_DB=${MULTICA_POSTGRES_DB:-multica}
|
|
- POSTGRES_USER=${MULTICA_POSTGRES_USER:-multica}
|
|
- POSTGRES_PASSWORD=${MULTICA_POSTGRES_PASSWORD:-multica}
|
|
volumes:
|
|
- multica_pgdata:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: [CMD-SHELL, pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 10s
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: ${MULTICA_POSTGRES_CPU_LIMIT:-1.00}
|
|
memory: ${MULTICA_POSTGRES_MEMORY_LIMIT:-1G}
|
|
reservations:
|
|
cpus: ${MULTICA_POSTGRES_CPU_RESERVATION:-0.25}
|
|
memory: ${MULTICA_POSTGRES_MEMORY_RESERVATION:-256M}
|
|
|
|
multica-backend:
|
|
<<: *defaults
|
|
build:
|
|
context: https://github.com/multica-ai/multica.git#${MULTICA_VERSION:-v0.1.32}
|
|
dockerfile: Dockerfile
|
|
depends_on:
|
|
multica-postgres:
|
|
condition: service_healthy
|
|
ports:
|
|
- '${MULTICA_BACKEND_PORT_OVERRIDE:-8080}:8080'
|
|
environment:
|
|
- TZ=${TZ:-UTC}
|
|
- DATABASE_URL=postgres://${MULTICA_POSTGRES_USER:-multica}:${MULTICA_POSTGRES_PASSWORD:-multica}@multica-postgres:5432/${MULTICA_POSTGRES_DB:-multica}?sslmode=disable
|
|
- PORT=8080
|
|
- JWT_SECRET=${MULTICA_JWT_SECRET:-change-me-in-production}
|
|
- FRONTEND_ORIGIN=${MULTICA_FRONTEND_ORIGIN:-http://localhost:3000}
|
|
- CORS_ALLOWED_ORIGINS=${MULTICA_CORS_ALLOWED_ORIGINS:-}
|
|
- MULTICA_APP_URL=${MULTICA_APP_URL:-http://localhost:3000}
|
|
- RESEND_API_KEY=${MULTICA_RESEND_API_KEY:-}
|
|
- RESEND_FROM_EMAIL=${MULTICA_RESEND_FROM_EMAIL:-noreply@multica.ai}
|
|
- GOOGLE_CLIENT_ID=${MULTICA_GOOGLE_CLIENT_ID:-}
|
|
- GOOGLE_CLIENT_SECRET=${MULTICA_GOOGLE_CLIENT_SECRET:-}
|
|
- GOOGLE_REDIRECT_URI=${MULTICA_GOOGLE_REDIRECT_URI:-http://localhost:3000/auth/callback}
|
|
- COOKIE_DOMAIN=${MULTICA_COOKIE_DOMAIN:-}
|
|
healthcheck:
|
|
test:
|
|
- CMD-SHELL
|
|
- wget --no-verbose --tries=1 --spider http://127.0.0.1:8080/ || exit 1
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
start_period: 60s
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: ${MULTICA_BACKEND_CPU_LIMIT:-2.00}
|
|
memory: ${MULTICA_BACKEND_MEMORY_LIMIT:-2G}
|
|
reservations:
|
|
cpus: ${MULTICA_BACKEND_CPU_RESERVATION:-0.50}
|
|
memory: ${MULTICA_BACKEND_MEMORY_RESERVATION:-512M}
|
|
|
|
multica-frontend:
|
|
<<: *defaults
|
|
build:
|
|
context: https://github.com/multica-ai/multica.git#${MULTICA_VERSION:-v0.1.32}
|
|
dockerfile: Dockerfile.web
|
|
args:
|
|
REMOTE_API_URL: http://multica-backend:8080
|
|
NEXT_PUBLIC_GOOGLE_CLIENT_ID: ${MULTICA_GOOGLE_CLIENT_ID:-}
|
|
depends_on:
|
|
- multica-backend
|
|
ports:
|
|
- '${MULTICA_FRONTEND_PORT_OVERRIDE:-3000}:3000'
|
|
environment:
|
|
- TZ=${TZ:-UTC}
|
|
- HOSTNAME=0.0.0.0
|
|
healthcheck:
|
|
test:
|
|
- CMD-SHELL
|
|
- wget --no-verbose --tries=1 --spider http://127.0.0.1:3000/ || exit 1
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
start_period: 60s
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: ${MULTICA_FRONTEND_CPU_LIMIT:-1.00}
|
|
memory: ${MULTICA_FRONTEND_MEMORY_LIMIT:-1G}
|
|
reservations:
|
|
cpus: ${MULTICA_FRONTEND_CPU_RESERVATION:-0.25}
|
|
memory: ${MULTICA_FRONTEND_MEMORY_RESERVATION:-256M}
|
|
|
|
volumes:
|
|
multica_pgdata:
|