Files
taiji-AI-PAD/docker-compose.yml
T

233 lines
6.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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: