258 lines
6.3 KiB
YAML
258 lines
6.3 KiB
YAML
# Docker Compose 会自动从 .env 文件读取环境变量
|
||
# 所有 ${VAR} 形式的变量都会从 .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
|
||
|
||
# Redis 缓存
|
||
redis:
|
||
image: redis:7-alpine
|
||
container_name: taiji-redis
|
||
ports:
|
||
- "6379:6379"
|
||
command: ["redis-server", "--appendonly", "yes"]
|
||
volumes:
|
||
- redis_data:/data
|
||
networks:
|
||
- taiji-network
|
||
restart: unless-stopped
|
||
|
||
# PostgreSQL 数据库
|
||
postgres:
|
||
image: postgres:15-alpine
|
||
container_name: taiji-postgres
|
||
ports:
|
||
- "5432:5432"
|
||
environment:
|
||
- POSTGRES_DB=${POSTGRES_DB}
|
||
- POSTGRES_USER=${POSTGRES_USER}
|
||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||
volumes:
|
||
- postgres_data:/var/lib/postgresql/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
|
||
- redis
|
||
- postgres
|
||
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"
|
||
environment:
|
||
- DATABASE_URL=${DATABASE_URL}
|
||
- ASYNC_DATABASE_URL=${ASYNC_DATABASE_URL}
|
||
- REDIS_URL=${REDIS_URL}
|
||
- NATS_URL=nats://nats:4222
|
||
- LITELLM_URL=http://litellm-gateway:4000
|
||
volumes:
|
||
- ./services/mcp-server:/app
|
||
- ./logs:/app/logs
|
||
depends_on:
|
||
- nats
|
||
- litellm-gateway
|
||
- redis
|
||
- postgres
|
||
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=postgresql://taiji_user:taiji_pass@postgres:5432/taiji_db
|
||
# - REDIS_URL=redis://redis:6379
|
||
# - NATS_URL=nats://nats:4222
|
||
# volumes:
|
||
# - ./services/agent-registry:/app
|
||
# - ./logs:/app/logs
|
||
# depends_on:
|
||
# - postgres
|
||
# - redis
|
||
# - 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=postgresql://taiji_user:taiji_pass@postgres:5432/taiji_db
|
||
# - REDIS_URL=redis://redis:6379
|
||
# - NATS_URL=nats://nats:6379
|
||
# volumes:
|
||
# - ./services/billing-engine:/app
|
||
# - ./logs:/app/logs
|
||
# depends_on:
|
||
# - postgres
|
||
# - redis
|
||
# - 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:
|
||
redis_data:
|
||
postgres_data:
|
||
|