forked from xiaohei/taiji-AI-PAD
233 lines
6.1 KiB
YAML
233 lines
6.1 KiB
YAML
# Docker Compose 会自动从 .env 文件读取环境变量
|
||
# 所有 ${VAR} 形式的变量都会从 .env 文件中获取
|
||
#
|
||
# 注意:PostgreSQL 和 Redis 使用 Azure 云服务,不在本地部署
|
||
# DATABASE_URL 和 REDIS_URL 通过 .env 文件配置
|
||
|
||
services:
|
||
# NATS消息队列
|
||
nats:
|
||
image: nats:2.10-alpine
|
||
container_name: taiji-nats
|
||
ports:
|
||
- "4222:4222" # Client connections
|
||
- "6222:6222" # Routing
|
||
- "8222:8222" # Monitoring
|
||
command: ["-js", "-m", "8222"] # Enable JetStream and monitoring
|
||
volumes:
|
||
- nats_data:/data
|
||
networks:
|
||
- taiji-network
|
||
restart: unless-stopped
|
||
|
||
# LiteLLM网关服务
|
||
litellm-gateway:
|
||
build:
|
||
context: ./services/model-gateway
|
||
dockerfile: Dockerfile
|
||
container_name: taiji-litellm-gateway
|
||
ports:
|
||
- "4000:4000"
|
||
environment:
|
||
- LITELLM_MASTER_KEY=${LITELLM_MASTER_KEY}
|
||
- DATABASE_URL=${DATABASE_URL}
|
||
- REDIS_URL=${REDIS_URL}
|
||
# OpenRouter 配置
|
||
- OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
|
||
- OPENROUTER_BASE_URL=${OPENROUTER_BASE_URL}
|
||
volumes:
|
||
- ./services/model-gateway/config:/app/config
|
||
- ./logs:/app/logs
|
||
networks:
|
||
- taiji-network
|
||
restart: unless-stopped
|
||
|
||
# 数据接入服务 (Python)
|
||
data-ingestion:
|
||
build:
|
||
context: ./services/data-ingestion
|
||
dockerfile: Dockerfile
|
||
container_name: taiji-data-ingestion
|
||
ports:
|
||
- "8001:8000"
|
||
environment:
|
||
- DATABASE_URL=${DATABASE_URL}
|
||
- ASYNC_DATABASE_URL=${ASYNC_DATABASE_URL}
|
||
- REDIS_URL=${REDIS_URL}
|
||
- NATS_URL=${NATS_URL}
|
||
# RapidAPI 配置
|
||
- RAPIDAPI_KEY=${RAPIDAPI_KEY}
|
||
- RAPIDAPI_HOST=${RAPIDAPI_HOST}
|
||
# OpenRouter 配置(用于APILLAMA)
|
||
- OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
|
||
- OPENROUTER_BASE_URL=${OPENROUTER_BASE_URL}
|
||
volumes:
|
||
- ./services/data-ingestion:/app
|
||
- ./logs:/app/logs
|
||
depends_on:
|
||
- nats
|
||
networks:
|
||
- taiji-network
|
||
restart: unless-stopped
|
||
|
||
# MCP服务器 (Python)
|
||
mcp-server:
|
||
build:
|
||
context: ./services/mcp-server
|
||
dockerfile: Dockerfile
|
||
container_name: taiji-mcp-server
|
||
ports:
|
||
- "8002:8000"
|
||
cpus: "2"
|
||
mem_limit: "8g"
|
||
environment:
|
||
- DATABASE_URL=${DATABASE_URL}
|
||
- ASYNC_DATABASE_URL=${ASYNC_DATABASE_URL}
|
||
- REDIS_URL=${REDIS_URL}
|
||
- NATS_URL=nats://nats:4222
|
||
- LITELLM_URL=${LITELLM_URL:-https://litellm.graystone-fb459c5d.southeastasia.azurecontainerapps.io}
|
||
- LITELLM_MASTER_KEY=${LITELLM_MASTER_KEY:-sk-1f06b8f0d2e34c9b8a9f3d75a1c4e9b7-7e3a2c6bd9f441d8}
|
||
- AGENT_MANAGER_URL=${AGENT_MANAGER_URL:-http://host.docker.internal:8000}
|
||
- ENVIRONMENT=production
|
||
- ENABLE_TEST_MODE=false
|
||
- SMTP_SERVER=${SMTP_SERVER:-smtp.189.cn}
|
||
- SMTP_PORT=${SMTP_PORT:-465}
|
||
- SMTP_EMAIL=${SMTP_EMAIL:-taijiagent@189.cn}
|
||
- SMTP_PASSWORD=${SMTP_PASSWORD:-eR)8hD@1Q)3sU%2q}
|
||
extra_hosts:
|
||
- "host.docker.internal:host-gateway"
|
||
volumes:
|
||
- ./services/mcp-server:/app
|
||
- ./logs:/app/logs
|
||
depends_on:
|
||
- nats
|
||
- litellm-gateway
|
||
networks:
|
||
- taiji-network
|
||
restart: unless-stopped
|
||
|
||
# Agent注册中心 (Go) - 暂时禁用
|
||
# agent-registry:
|
||
# build:
|
||
# context: ./services/agent-registry
|
||
# dockerfile: Dockerfile
|
||
# container_name: taiji-agent-registry
|
||
# ports:
|
||
# - "8003:8080"
|
||
# environment:
|
||
# - DATABASE_URL=${DATABASE_URL}
|
||
# - REDIS_URL=${REDIS_URL}
|
||
# - NATS_URL=nats://nats:4222
|
||
# volumes:
|
||
# - ./services/agent-registry:/app
|
||
# - ./logs:/app/logs
|
||
# depends_on:
|
||
# - nats
|
||
# networks:
|
||
# - taiji-network
|
||
# restart: unless-stopped
|
||
|
||
# EU计费引擎 (Go) - 暂时禁用
|
||
# billing-engine:
|
||
# build:
|
||
# context: ./services/billing-engine
|
||
# dockerfile: Dockerfile
|
||
# container_name: taiji-billing-engine
|
||
# ports:
|
||
# - "8004:8080"
|
||
# environment:
|
||
# - DATABASE_URL=${DATABASE_URL}
|
||
# - REDIS_URL=${REDIS_URL}
|
||
# - NATS_URL=nats://nats:4222
|
||
# volumes:
|
||
# - ./services/billing-engine:/app
|
||
# - ./logs:/app/logs
|
||
# depends_on:
|
||
# - nats
|
||
# networks:
|
||
# - taiji-network
|
||
# restart: unless-stopped
|
||
|
||
# API网关 (Nginx)
|
||
api-gateway:
|
||
image: nginx:alpine
|
||
container_name: taiji-api-gateway
|
||
ports:
|
||
- "80:80"
|
||
- "443:443"
|
||
volumes:
|
||
- ./config/nginx.conf:/etc/nginx/nginx.conf
|
||
- ./config/ssl:/etc/nginx/ssl
|
||
depends_on:
|
||
- data-ingestion
|
||
- mcp-server
|
||
networks:
|
||
- taiji-network
|
||
restart: unless-stopped
|
||
|
||
# 监控服务 - Prometheus
|
||
prometheus:
|
||
image: prom/prometheus:latest
|
||
container_name: taiji-prometheus
|
||
ports:
|
||
- "9090:9090"
|
||
volumes:
|
||
- ./config/prometheus.yml:/etc/prometheus/prometheus.yml
|
||
- prometheus_data:/prometheus
|
||
command:
|
||
- '--config.file=/etc/prometheus/prometheus.yml'
|
||
- '--storage.tsdb.path=/prometheus'
|
||
- '--web.console.libraries=/etc/prometheus/console_libraries'
|
||
- '--web.console.templates=/etc/prometheus/consoles'
|
||
- '--web.enable-lifecycle'
|
||
networks:
|
||
- taiji-network
|
||
restart: unless-stopped
|
||
|
||
# 监控服务 - Grafana
|
||
grafana:
|
||
image: grafana/grafana:latest
|
||
container_name: taiji-grafana
|
||
ports:
|
||
- "3000:3000"
|
||
environment:
|
||
- GF_SECURITY_ADMIN_PASSWORD=admin
|
||
volumes:
|
||
- grafana_data:/var/lib/grafana
|
||
- ./config/grafana/dashboards:/etc/grafana/provisioning/dashboards
|
||
- ./config/grafana/datasources:/etc/grafana/provisioning/datasources
|
||
depends_on:
|
||
- prometheus
|
||
networks:
|
||
- taiji-network
|
||
restart: unless-stopped
|
||
|
||
# 开发环境容器 (可选)
|
||
dev-container:
|
||
build:
|
||
context: ./dev-environment
|
||
dockerfile: Dockerfile
|
||
container_name: taiji-dev
|
||
volumes:
|
||
- .:/workspace
|
||
- /var/run/docker.sock:/var/run/docker.sock
|
||
working_dir: /workspace
|
||
tty: true
|
||
stdin_open: true
|
||
networks:
|
||
- taiji-network
|
||
profiles:
|
||
- dev
|
||
|
||
networks:
|
||
taiji-network:
|
||
driver: bridge
|
||
ipam:
|
||
config:
|
||
- subnet: 172.20.0.0/16
|
||
|
||
volumes:
|
||
nats_data:
|
||
prometheus_data:
|
||
grafana_data:
|