430 lines
12 KiB
YAML
430 lines
12 KiB
YAML
services:
|
|
router:
|
|
build:
|
|
context: ./services/router
|
|
dockerfile: Dockerfile
|
|
container_name: dagi-staging-router
|
|
environment:
|
|
- ROUTER_CONFIG_PATH=/app/router_config.yaml
|
|
- LOG_LEVEL=info
|
|
- NODE_ID=node-1-hetzner-gex44
|
|
- MEMORY_SERVICE_URL=http://memory-service:8000
|
|
- QDRANT_HOST=qdrant
|
|
- QDRANT_PORT=6333
|
|
- QDRANT_ENABLED=true
|
|
- NEO4J_BOLT_URL=bolt://neo4j:7687
|
|
- NEO4J_HTTP_URL=http://neo4j:7474
|
|
- NEO4J_USER=neo4j
|
|
- NEO4J_PASSWORD=DaarionNeo4j2026!
|
|
- DEEPSEEK_API_KEY=sk-0db94e8193ec4a6e9acd593ee8d898e7
|
|
- MISTRAL_API_KEY=40Gwjo8nVBx4i4vIkgszvXw9bOwDOu4G
|
|
- COHERE_API_KEY=nOdOXnuepLku2ipJWpe6acWgAsJCsDhMO0RnaEJB
|
|
- GROK_API_KEY=xai-69zEnDse8qRuQyZATs9jVKgfwdyvkHzgEVrTbV0OTAurZqsjHmvGepXG6H9GhVRYEC7E4NFl6iZeG0ww
|
|
- VISION_ENCODER_URL=http://vision-encoder:8001
|
|
- SWAPPER_SERVICE_URL=http://swapper-service:8890
|
|
- IMAGE_GEN_URL=http://swapper-service:8890/image/generate
|
|
- STT_SERVICE_URL=http://swapper-service:8890
|
|
- STT_SERVICE_UPLOAD_URL=http://swapper-service:8890/stt
|
|
- OCR_SERVICE_URL=http://swapper-service:8890
|
|
- WEB_SEARCH_SERVICE_URL=http://swapper-service:8890
|
|
- JWT_SECRET=${JWT_SECRET}
|
|
- SERVICE_AUD=microdao-internal
|
|
- SERVICE_ISS=microdao
|
|
- SERVICE_ID=router
|
|
- SERVICE_ROLE=router
|
|
- NATS_URL=nats://dagi-staging-nats:4222
|
|
volumes:
|
|
- ./services/router/router_config.yaml:/app/router_config.yaml:ro
|
|
- ./logs:/app/logs
|
|
networks:
|
|
- dagi-staging-network
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test:
|
|
- CMD-SHELL
|
|
- python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 10s
|
|
env_file:
|
|
- ./.env.staging
|
|
labels:
|
|
com.daarion.env: staging
|
|
swapper-service:
|
|
build:
|
|
context: ./services/swapper-service
|
|
dockerfile: Dockerfile
|
|
container_name: dagi-staging-swapper-service
|
|
environment:
|
|
- OLLAMA_BASE_URL=http://172.18.0.1:11434
|
|
- SWAPPER_CONFIG_PATH=/app/config/swapper_config.yaml
|
|
- SWAPPER_MODE=single-active
|
|
- MAX_CONCURRENT_MODELS=2
|
|
- MODEL_SWAP_TIMEOUT=300
|
|
- GPU_ENABLED=true
|
|
- NODE_ID=node-1-hetzner-gex44
|
|
- HF_HOME=/root/.cache/huggingface
|
|
- CUDA_VISIBLE_DEVICES=0
|
|
- CRAWL4AI_URL=http://crawl4ai:11235
|
|
- GROK_API_KEY=xai-69zEnDse8qRuQyZATs9jVKgfwdyvkHzgEVrTbV0OTAurZqsjHmvGepXG6H9GhVRYEC7E4NFl6iZeG0ww
|
|
- MISTRAL_API_KEY=40Gwjo8nVBx4i4vIkgszvXw9bOwDOu4G
|
|
volumes:
|
|
- ./services/swapper-service/config/swapper_config_node1.yaml:/app/config/swapper_config.yaml:ro
|
|
- ./logs:/app/logs
|
|
- swapper-hf-cache-staging:/root/.cache/huggingface
|
|
deploy:
|
|
resources:
|
|
reservations:
|
|
devices:
|
|
- driver: nvidia
|
|
count: 1
|
|
capabilities:
|
|
- gpu
|
|
networks:
|
|
- dagi-staging-network
|
|
restart: unless-stopped
|
|
extra_hosts:
|
|
- host.docker.internal:172.18.0.1
|
|
healthcheck:
|
|
test:
|
|
- CMD-SHELL
|
|
- wget -qO- http://localhost:8890/health || exit 1
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
env_file:
|
|
- ./.env.staging
|
|
labels:
|
|
com.daarion.env: staging
|
|
crawl4ai:
|
|
image: unclecode/crawl4ai:latest
|
|
container_name: dagi-staging-crawl4ai
|
|
environment:
|
|
- CRAWL4AI_API_TOKEN=${CRAWL4AI_API_TOKEN:-}
|
|
- MAX_CONCURRENT_TASKS=5
|
|
networks:
|
|
- dagi-staging-network
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- curl
|
|
- -f
|
|
- http://localhost:11235/health
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 30s
|
|
env_file:
|
|
- ./.env.staging
|
|
labels:
|
|
com.daarion.env: staging
|
|
gateway:
|
|
build:
|
|
context: ./gateway-bot
|
|
dockerfile: Dockerfile
|
|
container_name: dagi-staging-gateway
|
|
environment:
|
|
- ROUTER_URL=http://router:8000
|
|
- HELION_TELEGRAM_BOT_TOKEN=8112062582:AAGS-HwRLEI269lDutLtAJTFArsIq31YNhE
|
|
- HELION_NAME=Helion
|
|
- HELION_PROMPT_PATH=/app/gateway-bot/helion_prompt.txt
|
|
- GREENFOOD_TELEGRAM_BOT_TOKEN=7495165343:AAHz62qPdP2WAsVHpupPbkGAmpL94sEnNtw
|
|
- DRUID_TELEGRAM_BOT_TOKEN=8145618489:AAHquXktVRkcuU-kN4QxWf6yeJ5TDl_C7wg
|
|
- TELEGRAM_BOT_TOKEN=8323412397:AAFUhRiQpEbyoeX36FgvdIPJl1_8PdJsmkE
|
|
- GREENFOOD_NAME=GREENFOOD
|
|
- GREENFOOD_PROMPT_PATH=/app/gateway-bot/greenfood_prompt.txt
|
|
- NUTRA_TELEGRAM_BOT_TOKEN=8517315428:AAGTLcKxBAZDsMgx28agKTvl1SqJGi0utH4
|
|
- NUTRA_NAME=NUTRA
|
|
- NUTRA_PROMPT_PATH=/app/gateway-bot/nutra_prompt_v4_full.txt
|
|
- DRUID_PROMPT_PATH=/app/gateway-bot/prompts/druid_prompt.txt
|
|
- MEMORY_SERVICE_URL=http://memory-service:8000
|
|
- SWAPPER_SERVICE_URL=http://swapper-service:8890
|
|
- IMAGE_GEN_URL=http://swapper-service:8890/image/generate
|
|
- STT_SERVICE_URL=http://swapper-service:8890
|
|
- STT_SERVICE_UPLOAD_URL=http://swapper-service:8890/stt
|
|
- OCR_SERVICE_URL=http://swapper-service:8890
|
|
- WEB_SEARCH_SERVICE_URL=http://swapper-service:8890
|
|
- JWT_SECRET=${JWT_SECRET}
|
|
- SERVICE_AUD=microdao-internal
|
|
- SERVICE_ISS=microdao
|
|
- SERVICE_ID=gateway
|
|
- SERVICE_ROLE=gateway
|
|
volumes:
|
|
- ./gateway-bot:/app/gateway-bot:ro
|
|
- ./logs:/app/logs
|
|
depends_on:
|
|
- router
|
|
- memory-service
|
|
networks:
|
|
- dagi-staging-network
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test:
|
|
- CMD-SHELL
|
|
- python -c "import urllib.request; urllib.request.urlopen('http://localhost:9300/health')"
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 10s
|
|
env_file:
|
|
- ./.env.staging
|
|
labels:
|
|
com.daarion.env: staging
|
|
memory-service:
|
|
build:
|
|
context: ./services/memory-service
|
|
dockerfile: Dockerfile
|
|
container_name: dagi-staging-memory-service
|
|
environment:
|
|
- MEMORY_POSTGRES_HOST=dagi-postgres
|
|
- MEMORY_POSTGRES_PORT=5432
|
|
- MEMORY_POSTGRES_USER=daarion
|
|
- MEMORY_POSTGRES_PASSWORD=DaarionDB2026!
|
|
- MEMORY_POSTGRES_DB=daarion_main
|
|
- MEMORY_QDRANT_HOST=dagi-qdrant-node1
|
|
- MEMORY_QDRANT_PORT=6333
|
|
- MEMORY_COHERE_API_KEY=nOdOXnuepLku2ipJWpe6acWgAsJCsDhMO0RnaEJB
|
|
- MEMORY_DEBUG=false
|
|
- JWT_SECRET=${JWT_SECRET}
|
|
- SERVICE_AUD=microdao-internal
|
|
- SERVICE_ISS=microdao
|
|
- SERVICE_ID=memory
|
|
- SERVICE_ROLE=memory
|
|
- NEO4J_BOLT_URL=bolt://dagi-neo4j-node1:7687
|
|
volumes:
|
|
- ./logs:/app/logs
|
|
depends_on:
|
|
- qdrant
|
|
networks:
|
|
- dagi-staging-network
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test:
|
|
- CMD-SHELL
|
|
- python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 10s
|
|
expose:
|
|
- '8000'
|
|
env_file:
|
|
- ./.env.staging
|
|
labels:
|
|
com.daarion.env: staging
|
|
qdrant:
|
|
image: qdrant/qdrant:v1.7.4
|
|
container_name: dagi-staging-qdrant
|
|
ulimits:
|
|
nofile:
|
|
soft: 65535
|
|
hard: 65535
|
|
volumes:
|
|
- qdrant-data-staging:/qdrant/storage
|
|
networks:
|
|
dagi-staging-network:
|
|
aliases:
|
|
- qdrant
|
|
- dagi-qdrant-node1
|
|
restart: unless-stopped
|
|
environment: []
|
|
env_file:
|
|
- ./.env.staging
|
|
labels:
|
|
com.daarion.env: staging
|
|
neo4j:
|
|
image: neo4j:5.15-community
|
|
container_name: dagi-staging-neo4j
|
|
environment:
|
|
- NEO4J_AUTH=neo4j/DaarionNeo4j2026!
|
|
- NEO4J_PLUGINS=["apoc"]
|
|
- NEO4J_dbms_memory_heap_initial__size=512m
|
|
- NEO4J_dbms_memory_heap_max__size=2G
|
|
volumes:
|
|
- neo4j-data-staging:/data
|
|
- neo4j-logs-staging:/logs
|
|
networks:
|
|
dagi-staging-network:
|
|
aliases:
|
|
- neo4j
|
|
- dagi-neo4j-node1
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- wget
|
|
- --no-verbose
|
|
- --tries=1
|
|
- --spider
|
|
- http://localhost:7474
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
env_file:
|
|
- ./.env.staging
|
|
labels:
|
|
com.daarion.env: staging
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: dagi-staging-redis
|
|
volumes:
|
|
- redis-data-staging:/data
|
|
networks:
|
|
dagi-staging-network:
|
|
aliases:
|
|
- redis
|
|
- dagi-redis-node1
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- redis-cli
|
|
- PING
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
environment: []
|
|
env_file:
|
|
- ./.env.staging
|
|
labels:
|
|
com.daarion.env: staging
|
|
vision-encoder:
|
|
build:
|
|
context: ./services/vision-encoder
|
|
dockerfile: Dockerfile
|
|
container_name: dagi-staging-vision-encoder
|
|
environment:
|
|
- DEVICE=cpu
|
|
- MODEL_NAME=${VISION_MODEL_NAME:-ViT-L-14}
|
|
- MODEL_PRETRAINED=${VISION_MODEL_PRETRAINED:-openai}
|
|
- NORMALIZE_EMBEDDINGS=true
|
|
- QDRANT_HOST=qdrant
|
|
- QDRANT_PORT=6333
|
|
- QDRANT_ENABLED=true
|
|
volumes:
|
|
- ./logs:/app/logs
|
|
- vision-model-cache-staging:/root/.cache/clip
|
|
depends_on:
|
|
- qdrant
|
|
networks:
|
|
- dagi-staging-network
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test:
|
|
- CMD-SHELL
|
|
- python -c "import urllib.request; urllib.request.urlopen('http://localhost:8001/health')"
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
env_file:
|
|
- ./.env.staging
|
|
labels:
|
|
com.daarion.env: staging
|
|
crewai-service:
|
|
build:
|
|
context: ./services/crewai-service
|
|
dockerfile: Dockerfile
|
|
container_name: dagi-staging-crewai-service
|
|
environment:
|
|
- ROUTER_URL=http://router:8000
|
|
- DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}
|
|
- MISTRAL_API_KEY=${MISTRAL_API_KEY}
|
|
- JWT_SECRET=${JWT_SECRET}
|
|
- SERVICE_AUD=microdao-internal
|
|
- SERVICE_ISS=microdao
|
|
- SERVICE_ID=worker
|
|
- SERVICE_ROLE=worker
|
|
networks:
|
|
- dagi-staging-network
|
|
depends_on:
|
|
- router
|
|
restart: unless-stopped
|
|
env_file:
|
|
- ./.env.staging
|
|
labels:
|
|
com.daarion.env: staging
|
|
crewai-worker:
|
|
build:
|
|
context: ./services/crewai-worker
|
|
dockerfile: Dockerfile
|
|
container_name: dagi-staging-crewai-worker
|
|
environment:
|
|
- ROUTER_URL=http://router:9102
|
|
- JWT_SECRET=${JWT_SECRET}
|
|
- SERVICE_AUD=microdao-internal
|
|
- SERVICE_ISS=microdao
|
|
- SERVICE_ID=worker
|
|
- SERVICE_ROLE=worker
|
|
- NATS_URL=nats://dagi-staging-nats:4222
|
|
networks:
|
|
- dagi-staging-network
|
|
depends_on:
|
|
- router
|
|
env_file:
|
|
- ./.env.staging
|
|
labels:
|
|
com.daarion.env: staging
|
|
dagi-postgres:
|
|
image: postgres:15-alpine
|
|
container_name: dagi-staging-postgres
|
|
environment:
|
|
POSTGRES_DB: daarion_main
|
|
POSTGRES_USER: daarion
|
|
POSTGRES_PASSWORD: DaarionDB2026!
|
|
volumes:
|
|
- postgres-data-staging:/var/lib/postgresql/data
|
|
networks:
|
|
dagi-staging-network:
|
|
aliases:
|
|
- dagi-postgres
|
|
- postgres
|
|
labels:
|
|
com.daarion.env: staging
|
|
env_file:
|
|
- ./.env.staging
|
|
nats:
|
|
image: nats:latest
|
|
container_name: dagi-staging-nats
|
|
command:
|
|
- -c
|
|
- /etc/nats/nats.conf
|
|
volumes:
|
|
- nats-data-staging:/data
|
|
- ./nats/nats.staging.conf:/etc/nats/nats.conf:ro
|
|
networks:
|
|
- dagi-staging-network
|
|
labels:
|
|
com.daarion.env: staging
|
|
env_file:
|
|
- ./.env.staging
|
|
control-plane:
|
|
image: control-plane:latest
|
|
container_name: dagi-staging-control-plane
|
|
environment:
|
|
JWT_SECRET: ${JWT_SECRET}
|
|
SERVICE_ID: control-plane
|
|
SERVICE_ROLE: controlplane
|
|
SERVICE_AUD: microdao-internal
|
|
SERVICE_ISS: microdao
|
|
networks:
|
|
- dagi-staging-network
|
|
labels:
|
|
com.daarion.env: staging
|
|
env_file:
|
|
- ./.env.staging
|
|
volumes:
|
|
qdrant-data-staging: null
|
|
neo4j-data-staging: null
|
|
neo4j-logs-staging: null
|
|
redis-data-staging: null
|
|
postgres-data-staging: null
|
|
nats-data-staging: null
|
|
vision-model-cache-staging: null
|
|
swapper-hf-cache-staging: null
|
|
networks:
|
|
dagi-staging-network: null
|