services: deltallm: stop_grace_period: 90s build: context: . dockerfile: Dockerfile args: INSTALL_PRESIDIO: ${INSTALL_PRESIDIO:-false} profiles: ["single"] ports: - "4002:4000" environment: DELTALLM_CONFIG_PATH: /app/config/config.yaml OPENAI_API_KEY: ${OPENAI_API_KEY:-} DELTALLM_OPENAI_API_KEY: ${DELTALLM_OPENAI_API_KEY:-} DELTALLM_MASTER_KEY: ${DELTALLM_MASTER_KEY:-} PLATFORM_BOOTSTRAP_ADMIN_EMAIL: ${PLATFORM_BOOTSTRAP_ADMIN_EMAIL:-} PLATFORM_BOOTSTRAP_ADMIN_PASSWORD: ${PLATFORM_BOOTSTRAP_ADMIN_PASSWORD:-} LAKERA_API_KEY: ${LAKERA_API_KEY:-} DELTALLM_S3_BUCKET: ${DELTALLM_S3_BUCKET:-} REDIS_PASSWORD: ${REDIS_PASSWORD:-} DELTALLM_DATABASE_URL: postgresql://postgres:postgres@db:5432/deltallm DATABASE_URL: postgresql://postgres:postgres@db:5432/deltallm DELTALLM_REDIS_URL: redis://redis:6379/0 REDIS_URL: redis://redis:6379/0 DELTALLM_SALT_KEY: ${DELTALLM_SALT_KEY:-} volumes: - ./config.yaml:/app/config/config.yaml:ro depends_on: db: condition: service_healthy redis: condition: service_healthy healthcheck: test: ["CMD", "curl", "-fsS", "http://localhost:4000/health/liveliness"] interval: 30s timeout: 10s retries: 3 start_period: 10s deltallm-ha-1: stop_grace_period: 90s build: context: . dockerfile: Dockerfile args: INSTALL_PRESIDIO: ${INSTALL_PRESIDIO:-false} profiles: ["ha"] environment: DELTALLM_CONFIG_PATH: /app/config/config.yaml OPENAI_API_KEY: ${OPENAI_API_KEY:-} DELTALLM_OPENAI_API_KEY: ${DELTALLM_OPENAI_API_KEY:-} DELTALLM_MASTER_KEY: ${DELTALLM_MASTER_KEY:-} PLATFORM_BOOTSTRAP_ADMIN_EMAIL: ${PLATFORM_BOOTSTRAP_ADMIN_EMAIL:-} PLATFORM_BOOTSTRAP_ADMIN_PASSWORD: ${PLATFORM_BOOTSTRAP_ADMIN_PASSWORD:-} LAKERA_API_KEY: ${LAKERA_API_KEY:-} DELTALLM_S3_BUCKET: ${DELTALLM_S3_BUCKET:-} REDIS_PASSWORD: ${REDIS_PASSWORD:-} DELTALLM_DATABASE_URL: postgresql://postgres:postgres@db:5432/deltallm DATABASE_URL: postgresql://postgres:postgres@db:5432/deltallm DELTALLM_REDIS_URL: redis://redis:6379/0 REDIS_URL: redis://redis:6379/0 DELTALLM_SALT_KEY: ${DELTALLM_SALT_KEY:-} INSTANCE_ID: instance-1 volumes: - ./config.yaml:/app/config/config.yaml:ro depends_on: db: condition: service_healthy redis: condition: service_healthy deltallm-ha-2: stop_grace_period: 90s build: context: . dockerfile: Dockerfile args: INSTALL_PRESIDIO: ${INSTALL_PRESIDIO:-false} profiles: ["ha"] environment: DELTALLM_CONFIG_PATH: /app/config/config.yaml OPENAI_API_KEY: ${OPENAI_API_KEY:-} DELTALLM_OPENAI_API_KEY: ${DELTALLM_OPENAI_API_KEY:-} DELTALLM_MASTER_KEY: ${DELTALLM_MASTER_KEY:-} PLATFORM_BOOTSTRAP_ADMIN_EMAIL: ${PLATFORM_BOOTSTRAP_ADMIN_EMAIL:-} PLATFORM_BOOTSTRAP_ADMIN_PASSWORD: ${PLATFORM_BOOTSTRAP_ADMIN_PASSWORD:-} LAKERA_API_KEY: ${LAKERA_API_KEY:-} DELTALLM_S3_BUCKET: ${DELTALLM_S3_BUCKET:-} REDIS_PASSWORD: ${REDIS_PASSWORD:-} DELTALLM_DATABASE_URL: postgresql://postgres:postgres@db:5432/deltallm DATABASE_URL: postgresql://postgres:postgres@db:5432/deltallm DELTALLM_REDIS_URL: redis://redis:6379/0 REDIS_URL: redis://redis:6379/0 DELTALLM_SALT_KEY: ${DELTALLM_SALT_KEY:-} INSTANCE_ID: instance-2 volumes: - ./config.yaml:/app/config/config.yaml:ro depends_on: db: condition: service_healthy redis: condition: service_healthy nginx: image: nginx:1.27-alpine profiles: ["ha"] ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro depends_on: - deltallm-ha-1 - deltallm-ha-2 db: image: postgres:15-alpine ports: # Local only: reachable from this machine, not from the network. - "127.0.0.1:5432:5432" environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: deltallm volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 5s timeout: 5s retries: 10 redis: image: redis:7-alpine ports: - "127.0.0.1:6379:6379" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 10 volumes: postgres_data: redis_data: