Files
taiji-AI-PAD/docker-compose.yml
xiaohei 326d95c0ab fix: 修复MCP Agent注册数据库问题并添加数据库设计文档
任务1: 修复Agent注册找不到库的问题
- 问题: agents表不存在,导致Agent注册失败
- 解决: 手动执行数据库初始化,创建所有表
- 结果: 所有核心表已创建(users, agents, tools, sessions, executions, api_keys, billing, audit_logs)

任务2: 创建数据库设计文档
- 文档位置: Docs/项目文档/数据库设计文档.md
- 内容包含:
  * 数据库架构概述(PostgreSQL、Redis、NATS)
  * 8个核心数据表详细设计(字段、索引、关联关系)
  * Redis缓存设计和Key规范
  * NATS消息队列主题设计
  * 数据流转和处理流程
  * 数据库使用场景
  * 数据库初始化和维护指南
  * 数据安全和备份策略

数据库系统:
- PostgreSQL: 主数据库,存储持久化数据(8个核心表)
- Redis: 缓存和会话存储
- NATS: 消息队列和事件流

修复结果:
- agents表已创建,Agent注册功能正常
- 所有数据库表结构已文档化
2025-12-23 07:20:20 +00:00

261 lines
6.3 KiB
YAML
Raw Permalink 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.
version: '3.8'
# Docker Compose 会自动从 .env 文件读取环境变量
# 所有 ${VAR} 形式的变量都会从 .env 文件中获取
services:
# 数据库服务
postgres:
image: postgres:15-alpine
container_name: taiji-postgres
environment:
POSTGRES_DB: taiji_db
POSTGRES_USER: taiji_user
POSTGRES_PASSWORD: taiji_pass
volumes:
- postgres_data:/var/lib/postgresql/data
- ./scripts/init.sql:/docker-entrypoint-initdb.d/init.sql
ports:
- "5432:5432"
networks:
- taiji-network
restart: unless-stopped
# Redis缓存服务
redis:
image: redis:7-alpine
container_name: taiji-redis
ports:
- "6379:6379"
volumes:
- redis_data:/data
networks:
- taiji-network
restart: unless-stopped
# 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
depends_on:
- postgres
- redis
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}
- 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:
- postgres
- redis
- 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"
environment:
- DATABASE_URL=postgresql+asyncpg://taiji_user:taiji_pass@postgres:5432/taiji_db
- REDIS_URL=redis://redis:6379
- NATS_URL=nats://nats:4222
- LITELLM_URL=http://litellm-gateway:4000
volumes:
- ./services/mcp-server:/app
- ./logs:/app/logs
depends_on:
- postgres
- redis
- 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=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:
postgres_data:
redis_data:
nats_data:
prometheus_data:
grafana_data: