212 lines
5.5 KiB
YAML
212 lines
5.5 KiB
YAML
services:
|
|
postgres:
|
|
image: pgvector/pgvector:pg16
|
|
environment:
|
|
POSTGRES_DB: "${POSTGRES_DB:-duriin}"
|
|
POSTGRES_USER: "${POSTGRES_USER:-duriin}"
|
|
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env before starting PostgreSQL}"
|
|
command:
|
|
- postgres
|
|
- -c
|
|
- shared_buffers=128MB
|
|
- -c
|
|
- work_mem=4MB
|
|
- -c
|
|
- maintenance_work_mem=64MB
|
|
- -c
|
|
- effective_cache_size=256MB
|
|
- -c
|
|
- max_connections=40
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
mem_limit: 512m
|
|
cpus: "0.50"
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 12
|
|
networks:
|
|
- nginx_proxy_manager_default
|
|
|
|
postgres-migrate:
|
|
profiles: [migration]
|
|
build:
|
|
context: .
|
|
provenance: false
|
|
command: node scripts/migrate-sqlite-to-postgres.js
|
|
env_file: .env
|
|
volumes:
|
|
- ./config.json:/app/config.json:ro
|
|
- ./data:/data:ro
|
|
environment:
|
|
DATABASE_URL: "postgresql://${POSTGRES_USER:-duriin}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-duriin}"
|
|
SQLITE_ARCHIVE_PATH: /data/archive.sqlite
|
|
SQLITE_INTELLIGENCE_PATH: /data/intelligence.sqlite
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
networks:
|
|
- nginx_proxy_manager_default
|
|
|
|
api:
|
|
build:
|
|
context: .
|
|
provenance: false
|
|
env_file: .env
|
|
volumes:
|
|
- ./config.json:/app/config.json:ro
|
|
- ./data:/data
|
|
environment:
|
|
NODE_ENV: production
|
|
INTELLIGENCE_DB: /data/intelligence.sqlite
|
|
DURIIN_RUN_SCHEDULER: "false"
|
|
AUTONOMY_EXECUTION_MODE: "${AUTONOMY_EXECUTION_MODE:-shadow}"
|
|
restart: unless-stopped
|
|
networks:
|
|
- nginx_proxy_manager_default
|
|
|
|
intelligence:
|
|
profiles: [legacy]
|
|
build:
|
|
context: .
|
|
provenance: false
|
|
command: node workers/index.js
|
|
env_file: .env
|
|
volumes:
|
|
- ./config.json:/app/config.json:ro
|
|
- ./data:/data
|
|
environment:
|
|
NODE_ENV: production
|
|
DURIIN_DB: /data/archive.sqlite
|
|
INTELLIGENCE_DB: /data/intelligence.sqlite
|
|
restart: unless-stopped
|
|
networks:
|
|
- nginx_proxy_manager_default
|
|
|
|
autonomy:
|
|
build:
|
|
context: .
|
|
provenance: false
|
|
command: node workers/autonomy-entrypoint.js
|
|
env_file: .env
|
|
volumes:
|
|
- ./config.json:/app/config.json:ro
|
|
- ./data:/data
|
|
environment:
|
|
NODE_ENV: production
|
|
DURIIN_DB: /data/archive.sqlite
|
|
INTELLIGENCE_DB: /data/intelligence.sqlite
|
|
AUTONOMY_POLL_MS: "${AUTONOMY_POLL_MS:-5000}"
|
|
cpus: "0.50"
|
|
mem_limit: 512m
|
|
restart: unless-stopped
|
|
networks:
|
|
- nginx_proxy_manager_default
|
|
|
|
coordinator:
|
|
build:
|
|
context: .
|
|
provenance: false
|
|
command: node workers/coordinator-entrypoint.js
|
|
env_file: .env
|
|
volumes:
|
|
- ./config.json:/app/config.json:ro
|
|
- ./data:/data
|
|
environment:
|
|
NODE_ENV: production
|
|
DURIIN_DB: /data/archive.sqlite
|
|
INTELLIGENCE_DB: /data/intelligence.sqlite
|
|
AUTONOMY_POLL_MS: "${AUTONOMY_COORDINATOR_POLL_MS:-5000}"
|
|
cpus: "0.75"
|
|
mem_limit: 768m
|
|
restart: unless-stopped
|
|
networks:
|
|
- nginx_proxy_manager_default
|
|
|
|
autonomy-outcomes:
|
|
build:
|
|
context: .
|
|
provenance: false
|
|
command: node workers/outcome-autonomy-entrypoint.js
|
|
env_file: .env
|
|
volumes:
|
|
- ./data:/data
|
|
environment:
|
|
NODE_ENV: production
|
|
INTELLIGENCE_DB: /data/intelligence.sqlite
|
|
AUTONOMY_OUTCOME_POLL_MS: "${AUTONOMY_OUTCOME_POLL_MS:-60000}"
|
|
cpus: "0.25"
|
|
mem_limit: 384m
|
|
restart: unless-stopped
|
|
networks:
|
|
- nginx_proxy_manager_default
|
|
|
|
replay:
|
|
build:
|
|
context: .
|
|
provenance: false
|
|
command: node workers/replay-entrypoint.js
|
|
env_file: .env
|
|
volumes:
|
|
- ./config.json:/app/config.json:ro
|
|
- ./data:/data
|
|
environment:
|
|
NODE_ENV: production
|
|
DURIIN_DB: /data/archive.sqlite
|
|
INTELLIGENCE_DB: /data/intelligence.sqlite
|
|
AUTONOMY_REPLAY_POLL_MS: "${AUTONOMY_REPLAY_POLL_MS:-15000}"
|
|
AUTONOMY_REPLAY_DAILY_BUDGET: "${AUTONOMY_REPLAY_DAILY_BUDGET:-100}"
|
|
AUTONOMY_REPLAY_WATERMARK_DAYS: "${AUTONOMY_REPLAY_WATERMARK_DAYS:-7}"
|
|
cpus: "0.50"
|
|
mem_limit: 768m
|
|
restart: unless-stopped
|
|
networks:
|
|
- nginx_proxy_manager_default
|
|
|
|
calibration:
|
|
build:
|
|
context: .
|
|
provenance: false
|
|
command: node workers/calibration-entrypoint.js
|
|
env_file: .env
|
|
volumes:
|
|
- ./data:/data
|
|
environment:
|
|
NODE_ENV: production
|
|
INTELLIGENCE_DB: /data/intelligence.sqlite
|
|
AUTONOMY_CALIBRATION_POLL_MS: "${AUTONOMY_CALIBRATION_POLL_MS:-60000}"
|
|
cpus: "0.25"
|
|
mem_limit: 384m
|
|
restart: unless-stopped
|
|
networks:
|
|
- nginx_proxy_manager_default
|
|
|
|
execution:
|
|
build:
|
|
context: .
|
|
provenance: false
|
|
command: node workers/execution-entrypoint.js
|
|
env_file: .env
|
|
volumes:
|
|
- ./data:/data
|
|
environment:
|
|
NODE_ENV: production
|
|
INTELLIGENCE_DB: /data/intelligence.sqlite
|
|
AUTONOMY_EXECUTION_MODE: "${AUTONOMY_EXECUTION_MODE:-shadow}"
|
|
AUTONOMY_DEFAULT_NOTIONAL: "${AUTONOMY_DEFAULT_NOTIONAL:-100}"
|
|
AUTONOMY_EXECUTION_POLL_MS: "${AUTONOMY_EXECUTION_POLL_MS:-10000}"
|
|
cpus: "0.25"
|
|
mem_limit: 384m
|
|
restart: unless-stopped
|
|
networks:
|
|
- nginx_proxy_manager_default
|
|
|
|
networks:
|
|
nginx_proxy_manager_default:
|
|
external: true
|
|
|
|
volumes:
|
|
postgres_data:
|