Files

1 line
91 KiB
JSON

{"repo": "bg8cfb/tradingagents-cn", "files": {"config/models.json": {"7d3febcf6a544cc952710417d34ef994d0945994": {"t": 1785674187.5568323, "n": 4817, "h": "db0f8b988f1a27e3", "c": "[\n {\n \"provider\": \"dashscope\",\n \"model_name\": \"qwen-turbo\",\n \"api_key\": \"\",\n \"base_url\": \"https://dashscope.aliyuncs.com/compatible-mode/v1\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"dashscope\",\n \"model_name\": \"qwen-plus-latest\",\n \"api_key\": \"\",\n \"base_url\": null,\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"openai\",\n \"model_name\": \"gpt-3.5-turbo\",\n \"api_key\": \"\",\n \"base_url\": null,\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": false\n },\n {\n \"provider\": \"openai\",\n \"model_name\": \"gpt-4\",\n \"api_key\": \"\",\n \"base_url\": null,\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": false\n },\n {\n \"provider\": \"google\",\n \"model_name\": \"gemini-2.5-pro\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"deepseek\",\n \"model_name\": \"deepseek-chat\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"zhipu\",\n \"model_name\": \"GLM-4.5\",\n \"api_key\": \"\",\n \"base_url\": \"https://open.bigmodel.cn/api/coding/paas/v4\",\n \"max_tokens\": 128000,\n \"temperature\": 0.1,\n \"enabled\": true\n },\n {\n \"provider\": \"zhipu\",\n \"model_name\": \"glm-4\",\n \"api_key\": \"\",\n \"base_url\": \"https://open.bigmodel.cn/api/paas/v4\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": false\n },\n {\n \"provider\": \"zhipu\",\n \"model_name\": \"GLM-4.6\",\n \"api_key\": \"\",\n \"base_url\": \"https://open.bigmodel.cn/api/coding/paas/v4\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"dashscope\",\n \"model_name\": \"qwen-plus\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"dashscope\",\n \"model_name\": \"qwen-flash\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"google\",\n \"model_name\": \"gemini-2.5-flash\",\n \"api_key\": \"\",\n \"base_url\": null,\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"qianfan\",\n \"model_name\": \"ernie-3.5-8k\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"qianfan\",\n \"model_name\": \"ernie-4.0-turbo-8k\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"dashscope\",\n \"model_name\": \"qwen3-max\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"openrouter\",\n \"model_name\": \"anthropic/claude-sonnet-4.5\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"openrouter\",\n \"model_name\": \"openai/gpt-5\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"openrouter\",\n \"model_name\": \"google/gemini-2.5-pro\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"openrouter\",\n \"model_name\": \"google/gemini-2.5-flash\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"openrouter\",\n \"model_name\": \"openai/gpt-3.5-turbo\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"openrouter\",\n \"model_name\": \"google/gemini-2.0-flash-001\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"openai\",\n \"model_name\": \"Qwen3.6-27B\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 131072,\n \"temperature\": 0.3,\n \"timeout\": 600,\n \"enabled\": true,\n \"builtin\": true,\n \"description\": \"项目内置免费AI - NAS Qwen3.6-27B\"\n },\n {\n \"provider\": \"siliconflow\",\n \"model_name\": \"Pro/deepseek-ai/DeepSeek-V3.2-Exp\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"zhipu\",\n \"model_name\": \"GLM-5\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n },\n {\n \"provider\": \"zhipu\",\n \"model_name\": \"glm-5.1\",\n \"api_key\": \"\",\n \"base_url\": \"\",\n \"max_tokens\": 128000,\n \"temperature\": 0.7,\n \"enabled\": true\n }\n]"}}, "docker-compose.build.yml": {"7d3febcf6a544cc952710417d34ef994d0945994": {"t": 1785746988.4748359, "n": 7160, "h": "a705451e5c5aec6a", "c": "# TradingAgents-CN Docker Compose配置(带 Nginx 反向代理)\n# 使用Docker Hub镜像 + Nginx 反向代理\n#\n# 使用方法:\n# 1. 复制.env.example为.env并配置环境变量\n# 2. 运行: docker compose up -d\n# 3. 访问: http://your-server (前端和后端API都通过80端口访问)\n#\n# 优势:\n# - 前端和后端通过同一端口访问,无跨域问题\n# - 统一入口,便于配置 HTTPS\n# - 可以添加负载均衡、缓存等功能\n\nservices:\n # MongoDB数据库\n mongodb:\n # 升级到 7.0 以匹配现代技术栈 (Python 3.10+, Debian 12)\n image: docker.m.daocloud.io/library/mongo:7.0\n container_name: tradingagents-mongodb\n restart: unless-stopped\n volumes:\n - tradingagents_mongodb_data:/data/db\n # 注意:不挂载初始化脚本,使用 MongoDB 自动创建的 root 用户\n # 应用会在首次运行时自动创建所需的集合和索引\n environment:\n MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USERNAME:-admin}\n MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_PASSWORD:-tradingagents123}\n MONGO_INITDB_DATABASE: tradingagents\n TZ: \"Asia/Shanghai\"\n networks:\n - tradingagents-network\n healthcheck:\n test: echo 'db.runCommand(\"ping\").ok' | mongosh localhost:27017/test --quiet\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 10s\n\n # Redis 缓存\n redis:\n image: docker.m.daocloud.io/library/redis:7-alpine\n container_name: tradingagents-redis\n restart: unless-stopped\n volumes:\n - tradingagents_redis_data:/data\n environment:\n TZ: \"Asia/Shanghai\"\n REDISCLI_AUTH: ${REDIS_PASSWORD:-tradingagents123}\n command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-tradingagents123}\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"redis-cli\", \"ping\"]\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 5s\n\n # FastAPI后端服务\n backend:\n # 支持本地构建或从Docker Hub拉取\n # 本地构建: docker compose build backend\n # 拉取镜像: docker compose pull backend\n build:\n context: .\n dockerfile: docker/Dockerfile.backend\n # 使用 latest 标签以获取最新版本(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-backend:latest\n container_name: tradingagents-backend\n restart: unless-stopped\n expose:\n - \"8000\"\n volumes:\n # 运行时产物持久化(日志、数据、缓存、结果)\n - ./runtime:/app/runtime\n # 用户配置持久化挂载\n - ./config:/app/config\n env_file:\n - .env\n environment:\n TZ: \"Asia/Shanghai\"\n TRADINGAGENTS_LOG_LEVEL: \"INFO\"\n TRADINGAGENTS_LOG_DIR: \"/app/runtime/logs\"\n TRADINGAGENTS_LOG_FILE: \"/app/runtime/logs/tradingagents.log\"\n # MongoDB配置(使用 root 用户)\n MONGODB_HOST: \"mongodb\"\n MONGODB_PORT: \"27017\"\n MONGODB_USERNAME: ${MONGO_ROOT_USERNAME:-admin}\n MONGODB_PASSWORD: ${MONGODB_PASSWORD:-tradingagents123}\n MONGODB_DATABASE: \"tradingagents\"\n MONGODB_AUTH_SOURCE: \"admin\"\n # 注意:authSource=admin 表示在 admin 数据库中验证用户\n MONGODB_URL: \"mongodb://${MONGO_ROOT_USERNAME:-admin}:${MONGODB_PASSWORD:-tradingagents123}@mongodb:27017/tradingagents?authSource=admin\"\n MONGODB_CONNECTION_STRING: \"mongodb://${MONGO_ROOT_USERNAME:-admin}:${MONGODB_PASSWORD:-tradingagents123}@mongodb:27017/tradingagents?authSource=admin\"\n # Redis配置\n REDIS_HOST: \"redis\"\n REDIS_PORT: \"6379\"\n REDIS_PASSWORD: ${REDIS_PASSWORD:-tradingagents123}\n REDIS_URL: \"redis://:${REDIS_PASSWORD:-tradingagents123}@redis:6379/0\"\n DOCKER_CONTAINER: \"true\"\n # MCP 持久化配置\n MCP_CONFIG_PATH: \"/app/config/mcp.json\"\n # Agent 配置持久化\n AGENT_CONFIG_DIR: \"/app/config/agents\"\n \n # 安全配置 — 生产环境必须修改以下密钥!使用: openssl rand -hex 32 生成\n JWT_SECRET: ${JWT_SECRET:?请在 .env 中设置 JWT_SECRET}\n JWT_ALGORITHM: \"HS256\"\n ACCESS_TOKEN_EXPIRE_MINUTES: \"480\"\n REFRESH_TOKEN_EXPIRE_DAYS: \"30\"\n CSRF_SECRET: ${CSRF_SECRET:?请在 .env 中设置 CSRF_SECRET}\n BCRYPT_ROUNDS: \"12\"\n # CORS配置(允许 Nginx 代理)— 注意:字段名必须与 Settings.ALLOWED_ORIGINS 一致\n ALLOWED_ORIGINS: \"*\"\n # AI模型API密钥(从.env文件读取,environment部分需要显式声明才能覆盖镜像内的占位符)\n DASHSCOPE_API_KEY: \"${DASHSCOPE_API_KEY}\"\n DASHSCOPE_ENABLED: \"${DASHSCOPE_ENABLED:-false}\"\n DEEPSEEK_API_KEY: \"${DEEPSEEK_API_KEY}\"\n DEEPSEEK_ENABLED: \"${DEEPSEEK_ENABLED:-false}\"\n OPENAI_API_KEY: \"${OPENAI_API_KEY}\"\n OPENAI_ENABLED: \"${OPENAI_ENABLED:-false}\"\n GOOGLE_API_KEY: \"${GOOGLE_API_KEY}\"\n GOOGLE_ENABLED: \"${GOOGLE_ENABLED:-false}\"\n BAIDU_API_KEY: \"${BAIDU_API_KEY}\"\n BAIDU_SECRET_KEY: \"${BAIDU_SECRET_KEY}\"\n BAIDU_ENABLED: \"${BAIDU_ENABLED:-false}\"\n OPENROUTER_API_KEY: \"${OPENROUTER_API_KEY}\"\n OPENROUTER_ENABLED: \"${OPENROUTER_ENABLED:-false}\"\n # 数据源API密钥\n TUSHARE_TOKEN: \"${TUSHARE_TOKEN}\"\n TUSHARE_CN_TOKEN: \"${TUSHARE_CN_TOKEN:-}\"\n TUSHARE_HK_TOKEN: \"${TUSHARE_HK_TOKEN:-}\"\n TUSHARE_US_TOKEN: \"${TUSHARE_US_TOKEN:-}\"\n TUSHARE_ENABLED: \"${TUSHARE_ENABLED:-false}\"\n AKSHARE_ENABLED: \"${AKSHARE_ENABLED:-true}\"\n BAOSTOCK_ENABLED: \"${BAOSTOCK_ENABLED:-true}\"\n FINNHUB_API_KEY: \"${FINNHUB_API_KEY}\"\n ALPHA_VANTAGE_API_KEY: \"${ALPHA_VANTAGE_API_KEY:-}\"\n FINNHUB_ENABLED: \"${FINNHUB_ENABLED:-false}\"\n ANTHROPIC_API_KEY: \"${ANTHROPIC_API_KEY}\"\n ANTHROPIC_ENABLED: \"${ANTHROPIC_ENABLED:-false}\"\n SILICONFLOW_API_KEY: \"${SILICONFLOW_API_KEY}\"\n SILICONFLOW_ENABLED: \"${SILICONFLOW_ENABLED:-false}\"\n ALPHA_VANTAGE_API_KEY: \"${ALPHA_VANTAGE_API_KEY}\"\n ALPHA_VANTAGE_ENABLED: \"${ALPHA_VANTAGE_ENABLED:-false}\"\n # 首次初始化管理员密码(首次登录后请修改)\n INITIAL_ADMIN_PASSWORD: \"${INITIAL_ADMIN_PASSWORD:-admin123}\"\n depends_on:\n mongodb:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8000/api/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n\n # Vue 3前端服务\n frontend:\n # 支持本地构建或从Docker Hub拉取\n build:\n context: .\n dockerfile: docker/Dockerfile.frontend\n # 使用 latest 标签(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-frontend:latest\n container_name: tradingagents-frontend\n restart: unless-stopped\n expose:\n - \"80\"\n environment:\n TZ: \"Asia/Shanghai\"\n # 前端通过 Nginx 代理访问后端,使用相对路径\n VITE_API_BASE_URL: \"/api\"\n depends_on:\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\n # Nginx 反向代理\n # ports可以改为8080:80,或者其它的端口映射,前面一个是外部的端口,后面一个是容器内的端口\n nginx:\n image: docker.m.daocloud.io/library/nginx:alpine\n container_name: tradingagents-nginx\n restart: unless-stopped\n ports:\n - \"3000:80\"\n volumes:\n - ./docker/nginx/reverse-proxy.conf:/etc/nginx/nginx.conf:ro\n depends_on:\n - frontend\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\nvolumes:\n tradingagents_mongodb_data:\n driver: local\n tradingagents_redis_data:\n driver: local\n\nnetworks:\n tradingagents-network:\n driver: bridge\n\n"}, "416284c9359fe1785f704304760685e2c125d070": {"t": 1785769542.8104353, "n": 7160, "h": "a705451e5c5aec6a", "c": "# TradingAgents-CN Docker Compose配置(带 Nginx 反向代理)\n# 使用Docker Hub镜像 + Nginx 反向代理\n#\n# 使用方法:\n# 1. 复制.env.example为.env并配置环境变量\n# 2. 运行: docker compose up -d\n# 3. 访问: http://your-server (前端和后端API都通过80端口访问)\n#\n# 优势:\n# - 前端和后端通过同一端口访问,无跨域问题\n# - 统一入口,便于配置 HTTPS\n# - 可以添加负载均衡、缓存等功能\n\nservices:\n # MongoDB数据库\n mongodb:\n # 升级到 7.0 以匹配现代技术栈 (Python 3.10+, Debian 12)\n image: docker.m.daocloud.io/library/mongo:7.0\n container_name: tradingagents-mongodb\n restart: unless-stopped\n volumes:\n - tradingagents_mongodb_data:/data/db\n # 注意:不挂载初始化脚本,使用 MongoDB 自动创建的 root 用户\n # 应用会在首次运行时自动创建所需的集合和索引\n environment:\n MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USERNAME:-admin}\n MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_PASSWORD:-tradingagents123}\n MONGO_INITDB_DATABASE: tradingagents\n TZ: \"Asia/Shanghai\"\n networks:\n - tradingagents-network\n healthcheck:\n test: echo 'db.runCommand(\"ping\").ok' | mongosh localhost:27017/test --quiet\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 10s\n\n # Redis 缓存\n redis:\n image: docker.m.daocloud.io/library/redis:7-alpine\n container_name: tradingagents-redis\n restart: unless-stopped\n volumes:\n - tradingagents_redis_data:/data\n environment:\n TZ: \"Asia/Shanghai\"\n REDISCLI_AUTH: ${REDIS_PASSWORD:-tradingagents123}\n command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-tradingagents123}\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"redis-cli\", \"ping\"]\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 5s\n\n # FastAPI后端服务\n backend:\n # 支持本地构建或从Docker Hub拉取\n # 本地构建: docker compose build backend\n # 拉取镜像: docker compose pull backend\n build:\n context: .\n dockerfile: docker/Dockerfile.backend\n # 使用 latest 标签以获取最新版本(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-backend:latest\n container_name: tradingagents-backend\n restart: unless-stopped\n expose:\n - \"8000\"\n volumes:\n # 运行时产物持久化(日志、数据、缓存、结果)\n - ./runtime:/app/runtime\n # 用户配置持久化挂载\n - ./config:/app/config\n env_file:\n - .env\n environment:\n TZ: \"Asia/Shanghai\"\n TRADINGAGENTS_LOG_LEVEL: \"INFO\"\n TRADINGAGENTS_LOG_DIR: \"/app/runtime/logs\"\n TRADINGAGENTS_LOG_FILE: \"/app/runtime/logs/tradingagents.log\"\n # MongoDB配置(使用 root 用户)\n MONGODB_HOST: \"mongodb\"\n MONGODB_PORT: \"27017\"\n MONGODB_USERNAME: ${MONGO_ROOT_USERNAME:-admin}\n MONGODB_PASSWORD: ${MONGODB_PASSWORD:-tradingagents123}\n MONGODB_DATABASE: \"tradingagents\"\n MONGODB_AUTH_SOURCE: \"admin\"\n # 注意:authSource=admin 表示在 admin 数据库中验证用户\n MONGODB_URL: \"mongodb://${MONGO_ROOT_USERNAME:-admin}:${MONGODB_PASSWORD:-tradingagents123}@mongodb:27017/tradingagents?authSource=admin\"\n MONGODB_CONNECTION_STRING: \"mongodb://${MONGO_ROOT_USERNAME:-admin}:${MONGODB_PASSWORD:-tradingagents123}@mongodb:27017/tradingagents?authSource=admin\"\n # Redis配置\n REDIS_HOST: \"redis\"\n REDIS_PORT: \"6379\"\n REDIS_PASSWORD: ${REDIS_PASSWORD:-tradingagents123}\n REDIS_URL: \"redis://:${REDIS_PASSWORD:-tradingagents123}@redis:6379/0\"\n DOCKER_CONTAINER: \"true\"\n # MCP 持久化配置\n MCP_CONFIG_PATH: \"/app/config/mcp.json\"\n # Agent 配置持久化\n AGENT_CONFIG_DIR: \"/app/config/agents\"\n \n # 安全配置 — 生产环境必须修改以下密钥!使用: openssl rand -hex 32 生成\n JWT_SECRET: ${JWT_SECRET:?请在 .env 中设置 JWT_SECRET}\n JWT_ALGORITHM: \"HS256\"\n ACCESS_TOKEN_EXPIRE_MINUTES: \"480\"\n REFRESH_TOKEN_EXPIRE_DAYS: \"30\"\n CSRF_SECRET: ${CSRF_SECRET:?请在 .env 中设置 CSRF_SECRET}\n BCRYPT_ROUNDS: \"12\"\n # CORS配置(允许 Nginx 代理)— 注意:字段名必须与 Settings.ALLOWED_ORIGINS 一致\n ALLOWED_ORIGINS: \"*\"\n # AI模型API密钥(从.env文件读取,environment部分需要显式声明才能覆盖镜像内的占位符)\n DASHSCOPE_API_KEY: \"${DASHSCOPE_API_KEY}\"\n DASHSCOPE_ENABLED: \"${DASHSCOPE_ENABLED:-false}\"\n DEEPSEEK_API_KEY: \"${DEEPSEEK_API_KEY}\"\n DEEPSEEK_ENABLED: \"${DEEPSEEK_ENABLED:-false}\"\n OPENAI_API_KEY: \"${OPENAI_API_KEY}\"\n OPENAI_ENABLED: \"${OPENAI_ENABLED:-false}\"\n GOOGLE_API_KEY: \"${GOOGLE_API_KEY}\"\n GOOGLE_ENABLED: \"${GOOGLE_ENABLED:-false}\"\n BAIDU_API_KEY: \"${BAIDU_API_KEY}\"\n BAIDU_SECRET_KEY: \"${BAIDU_SECRET_KEY}\"\n BAIDU_ENABLED: \"${BAIDU_ENABLED:-false}\"\n OPENROUTER_API_KEY: \"${OPENROUTER_API_KEY}\"\n OPENROUTER_ENABLED: \"${OPENROUTER_ENABLED:-false}\"\n # 数据源API密钥\n TUSHARE_TOKEN: \"${TUSHARE_TOKEN}\"\n TUSHARE_CN_TOKEN: \"${TUSHARE_CN_TOKEN:-}\"\n TUSHARE_HK_TOKEN: \"${TUSHARE_HK_TOKEN:-}\"\n TUSHARE_US_TOKEN: \"${TUSHARE_US_TOKEN:-}\"\n TUSHARE_ENABLED: \"${TUSHARE_ENABLED:-false}\"\n AKSHARE_ENABLED: \"${AKSHARE_ENABLED:-true}\"\n BAOSTOCK_ENABLED: \"${BAOSTOCK_ENABLED:-true}\"\n FINNHUB_API_KEY: \"${FINNHUB_API_KEY}\"\n ALPHA_VANTAGE_API_KEY: \"${ALPHA_VANTAGE_API_KEY:-}\"\n FINNHUB_ENABLED: \"${FINNHUB_ENABLED:-false}\"\n ANTHROPIC_API_KEY: \"${ANTHROPIC_API_KEY}\"\n ANTHROPIC_ENABLED: \"${ANTHROPIC_ENABLED:-false}\"\n SILICONFLOW_API_KEY: \"${SILICONFLOW_API_KEY}\"\n SILICONFLOW_ENABLED: \"${SILICONFLOW_ENABLED:-false}\"\n ALPHA_VANTAGE_API_KEY: \"${ALPHA_VANTAGE_API_KEY}\"\n ALPHA_VANTAGE_ENABLED: \"${ALPHA_VANTAGE_ENABLED:-false}\"\n # 首次初始化管理员密码(首次登录后请修改)\n INITIAL_ADMIN_PASSWORD: \"${INITIAL_ADMIN_PASSWORD:-admin123}\"\n depends_on:\n mongodb:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8000/api/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n\n # Vue 3前端服务\n frontend:\n # 支持本地构建或从Docker Hub拉取\n build:\n context: .\n dockerfile: docker/Dockerfile.frontend\n # 使用 latest 标签(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-frontend:latest\n container_name: tradingagents-frontend\n restart: unless-stopped\n expose:\n - \"80\"\n environment:\n TZ: \"Asia/Shanghai\"\n # 前端通过 Nginx 代理访问后端,使用相对路径\n VITE_API_BASE_URL: \"/api\"\n depends_on:\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\n # Nginx 反向代理\n # ports可以改为8080:80,或者其它的端口映射,前面一个是外部的端口,后面一个是容器内的端口\n nginx:\n image: docker.m.daocloud.io/library/nginx:alpine\n container_name: tradingagents-nginx\n restart: unless-stopped\n ports:\n - \"3000:80\"\n volumes:\n - ./docker/nginx/reverse-proxy.conf:/etc/nginx/nginx.conf:ro\n depends_on:\n - frontend\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\nvolumes:\n tradingagents_mongodb_data:\n driver: local\n tradingagents_redis_data:\n driver: local\n\nnetworks:\n tradingagents-network:\n driver: bridge\n\n"}, "ceb17e83891d7806248bd6fb76366fd80baa2b17": {"t": 1785769544.767857, "n": 6958, "h": "a41fed364cfdc66b", "c": "# TradingAgents-CN Docker Compose配置(带 Nginx 反向代理)\n# 使用Docker Hub镜像 + Nginx 反向代理\n#\n# 使用方法:\n# 1. 复制.env.example为.env并配置环境变量\n# 2. 运行: docker compose up -d\n# 3. 访问: http://your-server (前端和后端API都通过80端口访问)\n#\n# 优势:\n# - 前端和后端通过同一端口访问,无跨域问题\n# - 统一入口,便于配置 HTTPS\n# - 可以添加负载均衡、缓存等功能\n\nservices:\n # MongoDB数据库\n mongodb:\n # 升级到 7.0 以匹配现代技术栈 (Python 3.10+, Debian 12)\n image: docker.m.daocloud.io/library/mongo:7.0\n container_name: tradingagents-mongodb\n restart: unless-stopped\n volumes:\n - tradingagents_mongodb_data:/data/db\n # 注意:不挂载初始化脚本,使用 MongoDB 自动创建的 root 用户\n # 应用会在首次运行时自动创建所需的集合和索引\n environment:\n MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USERNAME:-admin}\n MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_PASSWORD:-tradingagents123}\n MONGO_INITDB_DATABASE: tradingagents\n TZ: \"Asia/Shanghai\"\n networks:\n - tradingagents-network\n healthcheck:\n test: echo 'db.runCommand(\"ping\").ok' | mongosh localhost:27017/test --quiet\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 10s\n\n # Redis 缓存\n redis:\n image: docker.m.daocloud.io/library/redis:7-alpine\n container_name: tradingagents-redis\n restart: unless-stopped\n volumes:\n - tradingagents_redis_data:/data\n environment:\n TZ: \"Asia/Shanghai\"\n REDISCLI_AUTH: ${REDIS_PASSWORD:-tradingagents123}\n command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-tradingagents123}\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"redis-cli\", \"ping\"]\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 5s\n\n # FastAPI后端服务\n backend:\n # 支持本地构建或从Docker Hub拉取\n # 本地构建: docker compose build backend\n # 拉取镜像: docker compose pull backend\n build:\n context: .\n dockerfile: docker/Dockerfile.backend\n # 使用 latest 标签以获取最新版本(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-backend:latest\n container_name: tradingagents-backend\n restart: unless-stopped\n expose:\n - \"8000\"\n volumes:\n # 运行时产物持久化(日志、数据、缓存、结果)\n - ./runtime:/app/runtime\n # 用户配置持久化挂载\n - ./config:/app/config\n env_file:\n - .env\n environment:\n TZ: \"Asia/Shanghai\"\n TRADINGAGENTS_LOG_LEVEL: \"INFO\"\n TRADINGAGENTS_LOG_DIR: \"/app/runtime/logs\"\n TRADINGAGENTS_LOG_FILE: \"/app/runtime/logs/tradingagents.log\"\n # MongoDB配置(使用 root 用户)\n MONGODB_HOST: \"mongodb\"\n MONGODB_PORT: \"27017\"\n MONGODB_USERNAME: ${MONGO_ROOT_USERNAME:-admin}\n MONGODB_PASSWORD: ${MONGODB_PASSWORD:-tradingagents123}\n MONGODB_DATABASE: \"tradingagents\"\n MONGODB_AUTH_SOURCE: \"admin\"\n # 注意:authSource=admin 表示在 admin 数据库中验证用户\n MONGODB_URL: \"mongodb://${MONGO_ROOT_USERNAME:-admin}:${MONGODB_PASSWORD:-tradingagents123}@mongodb:27017/tradingagents?authSource=admin\"\n MONGODB_CONNECTION_STRING: \"mongodb://${MONGO_ROOT_USERNAME:-admin}:${MONGODB_PASSWORD:-tradingagents123}@mongodb:27017/tradingagents?authSource=admin\"\n # Redis配置\n REDIS_HOST: \"redis\"\n REDIS_PORT: \"6379\"\n REDIS_PASSWORD: ${REDIS_PASSWORD:-tradingagents123}\n REDIS_URL: \"redis://:${REDIS_PASSWORD:-tradingagents123}@redis:6379/0\"\n DOCKER_CONTAINER: \"true\"\n # MCP 持久化配置\n MCP_CONFIG_PATH: \"/app/config/mcp.json\"\n # Agent 配置持久化\n AGENT_CONFIG_DIR: \"/app/config/agents\"\n \n # 安全配置 — 生产环境必须修改以下密钥!使用: openssl rand -hex 32 生成\n JWT_SECRET: ${JWT_SECRET:?请在 .env 中设置 JWT_SECRET}\n JWT_ALGORITHM: \"HS256\"\n ACCESS_TOKEN_EXPIRE_MINUTES: \"480\"\n REFRESH_TOKEN_EXPIRE_DAYS: \"30\"\n CSRF_SECRET: ${CSRF_SECRET:?请在 .env 中设置 CSRF_SECRET}\n BCRYPT_ROUNDS: \"12\"\n # CORS配置(允许 Nginx 代理)— 注意:字段名必须与 Settings.ALLOWED_ORIGINS 一致\n ALLOWED_ORIGINS: \"*\"\n # AI模型API密钥(从.env文件读取,environment部分需要显式声明才能覆盖镜像内的占位符)\n DASHSCOPE_API_KEY: \"${DASHSCOPE_API_KEY}\"\n DASHSCOPE_ENABLED: \"${DASHSCOPE_ENABLED:-false}\"\n DEEPSEEK_API_KEY: \"${DEEPSEEK_API_KEY}\"\n DEEPSEEK_ENABLED: \"${DEEPSEEK_ENABLED:-false}\"\n OPENAI_API_KEY: \"${OPENAI_API_KEY}\"\n OPENAI_ENABLED: \"${OPENAI_ENABLED:-false}\"\n GOOGLE_API_KEY: \"${GOOGLE_API_KEY}\"\n GOOGLE_ENABLED: \"${GOOGLE_ENABLED:-false}\"\n BAIDU_API_KEY: \"${BAIDU_API_KEY}\"\n BAIDU_SECRET_KEY: \"${BAIDU_SECRET_KEY}\"\n BAIDU_ENABLED: \"${BAIDU_ENABLED:-false}\"\n OPENROUTER_API_KEY: \"${OPENROUTER_API_KEY}\"\n OPENROUTER_ENABLED: \"${OPENROUTER_ENABLED:-false}\"\n # 数据源API密钥\n TUSHARE_TOKEN: \"${TUSHARE_TOKEN}\"\n TUSHARE_ENABLED: \"${TUSHARE_ENABLED:-false}\"\n AKSHARE_ENABLED: \"${AKSHARE_ENABLED:-true}\"\n BAOSTOCK_ENABLED: \"${BAOSTOCK_ENABLED:-true}\"\n FINNHUB_API_KEY: \"${FINNHUB_API_KEY}\"\n FINNHUB_ENABLED: \"${FINNHUB_ENABLED:-false}\"\n ANTHROPIC_API_KEY: \"${ANTHROPIC_API_KEY}\"\n ANTHROPIC_ENABLED: \"${ANTHROPIC_ENABLED:-false}\"\n SILICONFLOW_API_KEY: \"${SILICONFLOW_API_KEY}\"\n SILICONFLOW_ENABLED: \"${SILICONFLOW_ENABLED:-false}\"\n ALPHA_VANTAGE_API_KEY: \"${ALPHA_VANTAGE_API_KEY}\"\n ALPHA_VANTAGE_ENABLED: \"${ALPHA_VANTAGE_ENABLED:-false}\"\n # 首次初始化管理员密码(首次登录后请修改)\n INITIAL_ADMIN_PASSWORD: \"${INITIAL_ADMIN_PASSWORD:-admin123}\"\n depends_on:\n mongodb:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8000/api/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n\n # Vue 3前端服务\n frontend:\n # 支持本地构建或从Docker Hub拉取\n build:\n context: .\n dockerfile: docker/Dockerfile.frontend\n # 使用 latest 标签(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-frontend:latest\n container_name: tradingagents-frontend\n restart: unless-stopped\n expose:\n - \"80\"\n environment:\n TZ: \"Asia/Shanghai\"\n # 前端通过 Nginx 代理访问后端,使用相对路径\n VITE_API_BASE_URL: \"/api\"\n depends_on:\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\n # Nginx 反向代理\n # ports可以改为8080:80,或者其它的端口映射,前面一个是外部的端口,后面一个是容器内的端口\n nginx:\n image: docker.m.daocloud.io/library/nginx:alpine\n container_name: tradingagents-nginx\n restart: unless-stopped\n ports:\n - \"3000:80\"\n volumes:\n - ./docker/nginx/reverse-proxy.conf:/etc/nginx/nginx.conf:ro\n depends_on:\n - frontend\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\nvolumes:\n tradingagents_mongodb_data:\n driver: local\n tradingagents_redis_data:\n driver: local\n\nnetworks:\n tradingagents-network:\n driver: bridge\n\n"}, "c84e5d1ebd0440653cc40e2a166eb82acb3888f8": {"t": 1785769546.2727983, "n": 6954, "h": "89e6c5bc1acedc48", "c": "# TradingAgents-CN Docker Compose配置(带 Nginx 反向代理)\n# 使用Docker Hub镜像 + Nginx 反向代理\n#\n# 使用方法:\n# 1. 复制.env.example为.env并配置环境变量\n# 2. 运行: docker compose up -d\n# 3. 访问: http://your-server (前端和后端API都通过80端口访问)\n#\n# 优势:\n# - 前端和后端通过同一端口访问,无跨域问题\n# - 统一入口,便于配置 HTTPS\n# - 可以添加负载均衡、缓存等功能\n\nservices:\n # MongoDB数据库\n mongodb:\n # 升级到 7.0 以匹配现代技术栈 (Python 3.10+, Debian 12)\n image: docker.m.daocloud.io/library/mongo:7.0\n container_name: tradingagents-mongodb\n restart: unless-stopped\n volumes:\n - tradingagents_mongodb_data:/data/db\n # 注意:不挂载初始化脚本,使用 MongoDB 自动创建的 root 用户\n # 应用会在首次运行时自动创建所需的集合和索引\n environment:\n MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USERNAME:-admin}\n MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_PASSWORD:-tradingagents123}\n MONGO_INITDB_DATABASE: tradingagents\n TZ: \"Asia/Shanghai\"\n networks:\n - tradingagents-network\n healthcheck:\n test: echo 'db.runCommand(\"ping\").ok' | mongosh localhost:27017/test --quiet\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 10s\n\n # Redis 缓存\n redis:\n image: docker.m.daocloud.io/library/redis:7-alpine\n container_name: tradingagents-redis\n restart: unless-stopped\n volumes:\n - tradingagents_redis_data:/data\n environment:\n TZ: \"Asia/Shanghai\"\n REDISCLI_AUTH: ${REDIS_PASSWORD:-tradingagents123}\n command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-tradingagents123}\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"redis-cli\", \"ping\"]\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 5s\n\n # FastAPI后端服务\n backend:\n # 支持本地构建或从Docker Hub拉取\n # 本地构建: docker compose build backend\n # 拉取镜像: docker compose pull backend\n build:\n context: .\n dockerfile: docker/Dockerfile.backend\n # 使用 latest 标签以获取最新版本(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-backend:latest\n container_name: tradingagents-backend\n restart: unless-stopped\n expose:\n - \"8000\"\n volumes:\n # 运行时产物持久化(日志、数据、缓存、结果)\n - ./runtime:/app/runtime\n # 用户配置持久化挂载\n - ./config:/app/config\n env_file:\n - .env\n environment:\n TZ: \"Asia/Shanghai\"\n TRADINGAGENTS_LOG_LEVEL: \"INFO\"\n TRADINGAGENTS_LOG_DIR: \"/app/runtime/logs\"\n TRADINGAGENTS_LOG_FILE: \"/app/runtime/logs/tradingagents.log\"\n # MongoDB配置(使用 root 用户)\n MONGODB_HOST: \"mongodb\"\n MONGODB_PORT: \"27017\"\n MONGODB_USERNAME: ${MONGO_ROOT_USERNAME:-admin}\n MONGODB_PASSWORD: ${MONGODB_PASSWORD:-tradingagents123}\n MONGODB_DATABASE: \"tradingagents\"\n MONGODB_AUTH_SOURCE: \"admin\"\n # 注意:authSource=admin 表示在 admin 数据库中验证用户\n MONGODB_URL: \"mongodb://${MONGO_ROOT_USERNAME:-admin}:${MONGODB_PASSWORD:-tradingagents123}@mongodb:27017/tradingagents?authSource=admin\"\n MONGODB_CONNECTION_STRING: \"mongodb://${MONGO_ROOT_USERNAME:-admin}:${MONGODB_PASSWORD:-tradingagents123}@mongodb:27017/tradingagents?authSource=admin\"\n # Redis配置\n REDIS_HOST: \"redis\"\n REDIS_PORT: \"6379\"\n REDIS_PASSWORD: ${REDIS_PASSWORD:-tradingagents123}\n REDIS_URL: \"redis://:${REDIS_PASSWORD:-tradingagents123}@redis:6379/0\"\n DOCKER_CONTAINER: \"true\"\n # MCP 持久化配置\n MCP_CONFIG_PATH: \"/app/config/mcp.json\"\n # Agent 配置持久化\n AGENT_CONFIG_DIR: \"/app/config/agents\"\n \n # 安全配置 — 生产环境必须修改以下密钥!使用: openssl rand -hex 32 生成\n JWT_SECRET: ${JWT_SECRET:?请在 .env 中设置 JWT_SECRET}\n JWT_ALGORITHM: \"HS256\"\n ACCESS_TOKEN_EXPIRE_MINUTES: \"480\"\n REFRESH_TOKEN_EXPIRE_DAYS: \"30\"\n CSRF_SECRET: ${CSRF_SECRET:?请在 .env 中设置 CSRF_SECRET}\n BCRYPT_ROUNDS: \"12\"\n # CORS配置(允许 Nginx 代理)— 注意:字段名必须与 Settings.ALLOWED_ORIGINS 一致\n ALLOWED_ORIGINS: \"*\"\n # AI模型API密钥(从.env文件读取,environment部分需要显式声明才能覆盖镜像内的占位符)\n DASHSCOPE_API_KEY: \"${DASHSCOPE_API_KEY}\"\n DASHSCOPE_ENABLED: \"${DASHSCOPE_ENABLED:-false}\"\n DEEPSEEK_API_KEY: \"${DEEPSEEK_API_KEY}\"\n DEEPSEEK_ENABLED: \"${DEEPSEEK_ENABLED:-false}\"\n OPENAI_API_KEY: \"${OPENAI_API_KEY}\"\n OPENAI_ENABLED: \"${OPENAI_ENABLED:-false}\"\n GOOGLE_API_KEY: \"${GOOGLE_API_KEY}\"\n GOOGLE_ENABLED: \"${GOOGLE_ENABLED:-false}\"\n BAIDU_API_KEY: \"${BAIDU_API_KEY}\"\n BAIDU_SECRET_KEY: \"${BAIDU_SECRET_KEY}\"\n BAIDU_ENABLED: \"${BAIDU_ENABLED:-false}\"\n OPENROUTER_API_KEY: \"${OPENROUTER_API_KEY}\"\n OPENROUTER_ENABLED: \"${OPENROUTER_ENABLED:-false}\"\n # 数据源API密钥\n TUSHARE_TOKEN: \"${TUSHARE_TOKEN}\"\n TUSHARE_ENABLED: \"${TUSHARE_ENABLED:-false}\"\n AKSHARE_ENABLED: \"${AKSHARE_ENABLED:-true}\"\n BAOSTOCK_ENABLED: \"${BAOSTOCK_ENABLED:-true}\"\n FINNHUB_API_KEY: \"${FINNHUB_API_KEY}\"\n FINNHUB_ENABLED: \"${FINNHUB_ENABLED:-false}\"\n ANTHROPIC_API_KEY: \"${ANTHROPIC_API_KEY}\"\n ANTHROPIC_ENABLED: \"${ANTHROPIC_ENABLED:-false}\"\n SILICONFLOW_API_KEY: \"${SILICONFLOW_API_KEY}\"\n SILICONFLOW_ENABLED: \"${SILICONFLOW_ENABLED:-false}\"\n ALPHA_VANTAGE_API_KEY: \"${ALPHA_VANTAGE_API_KEY}\"\n ALPHA_VANTAGE_ENABLED: \"${ALPHA_VANTAGE_ENABLED:-false}\"\n # 首次初始化管理员密码(首次登录后请修改)\n INITIAL_ADMIN_PASSWORD: \"${INITIAL_ADMIN_PASSWORD:-admin123}\"\n depends_on:\n mongodb:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8000/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n\n # Vue 3前端服务\n frontend:\n # 支持本地构建或从Docker Hub拉取\n build:\n context: .\n dockerfile: docker/Dockerfile.frontend\n # 使用 latest 标签(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-frontend:latest\n container_name: tradingagents-frontend\n restart: unless-stopped\n expose:\n - \"80\"\n environment:\n TZ: \"Asia/Shanghai\"\n # 前端通过 Nginx 代理访问后端,使用相对路径\n VITE_API_BASE_URL: \"/api\"\n depends_on:\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\n # Nginx 反向代理\n # ports可以改为8080:80,或者其它的端口映射,前面一个是外部的端口,后面一个是容器内的端口\n nginx:\n image: docker.m.daocloud.io/library/nginx:alpine\n container_name: tradingagents-nginx\n restart: unless-stopped\n ports:\n - \"3000:80\"\n volumes:\n - ./docker/nginx/reverse-proxy.conf:/etc/nginx/nginx.conf:ro\n depends_on:\n - frontend\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\nvolumes:\n tradingagents_mongodb_data:\n driver: local\n tradingagents_redis_data:\n driver: local\n\nnetworks:\n tradingagents-network:\n driver: bridge\n\n"}, "4d9446cf092cc68a4d07c488302f5b6cacc79de3": {"t": 1785769547.800911, "n": 6842, "h": "44f4f3a5054b7bee", "c": "# TradingAgents-CN Docker Compose配置(带 Nginx 反向代理)\n# 使用Docker Hub镜像 + Nginx 反向代理\n#\n# 使用方法:\n# 1. 复制.env.example为.env并配置环境变量\n# 2. 运行: docker compose up -d\n# 3. 访问: http://your-server (前端和后端API都通过80端口访问)\n#\n# 优势:\n# - 前端和后端通过同一端口访问,无跨域问题\n# - 统一入口,便于配置 HTTPS\n# - 可以添加负载均衡、缓存等功能\n\nservices:\n # MongoDB数据库\n mongodb:\n # 升级到 7.0 以匹配现代技术栈 (Python 3.10+, Debian 12)\n image: docker.m.daocloud.io/library/mongo:7.0\n container_name: tradingagents-mongodb\n restart: unless-stopped\n volumes:\n - tradingagents_mongodb_data:/data/db\n # 注意:不挂载初始化脚本,使用 MongoDB 自动创建的 root 用户\n # 应用会在首次运行时自动创建所需的集合和索引\n environment:\n MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USERNAME:-admin}\n MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_PASSWORD:-tradingagents123}\n MONGO_INITDB_DATABASE: tradingagents\n TZ: \"Asia/Shanghai\"\n networks:\n - tradingagents-network\n healthcheck:\n test: echo 'db.runCommand(\"ping\").ok' | mongosh localhost:27017/test --quiet\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 10s\n\n # Redis 缓存\n redis:\n image: docker.m.daocloud.io/library/redis:7-alpine\n container_name: tradingagents-redis\n restart: unless-stopped\n volumes:\n - tradingagents_redis_data:/data\n environment:\n TZ: \"Asia/Shanghai\"\n command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-tradingagents123}\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"redis-cli\", \"-a\", \"${REDIS_PASSWORD:-tradingagents123}\", \"ping\"]\n # 注意:-a 参数会将密码暴露在进程列表中。\n # TODO(安全): 改用 REDISCLI_AUTH 环境变量避免密码泄露:\n # environment:\n # REDISCLI_AUTH: ${REDIS_PASSWORD:-tradingagents123}\n # healthcheck:\n # test: [\"CMD\", \"redis-cli\", \"ping\"]\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 5s\n\n # FastAPI后端服务\n backend:\n # 支持本地构建或从Docker Hub拉取\n # 本地构建: docker compose build backend\n # 拉取镜像: docker compose pull backend\n build:\n context: .\n dockerfile: docker/Dockerfile.backend\n # 使用 latest 标签以获取最新版本(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-backend:latest\n container_name: tradingagents-backend\n restart: unless-stopped\n expose:\n - \"8000\"\n volumes:\n # 运行时产物持久化(日志、数据、缓存、结果)\n - ./runtime:/app/runtime\n # 用户配置持久化挂载\n - ./config:/app/config\n env_file:\n - .env\n environment:\n TZ: \"Asia/Shanghai\"\n TRADINGAGENTS_LOG_LEVEL: \"INFO\"\n TRADINGAGENTS_LOG_DIR: \"/app/runtime/logs\"\n TRADINGAGENTS_LOG_FILE: \"/app/runtime/logs/tradingagents.log\"\n # MongoDB配置(使用 root 用户)\n MONGODB_HOST: \"mongodb\"\n MONGODB_PORT: \"27017\"\n MONGODB_USERNAME: ${MONGO_ROOT_USERNAME:-admin}\n MONGODB_PASSWORD: ${MONGODB_PASSWORD:-tradingagents123}\n MONGODB_DATABASE: \"tradingagents\"\n MONGODB_AUTH_SOURCE: \"admin\"\n # 注意:authSource=admin 表示在 admin 数据库中验证用户\n MONGODB_URL: \"mongodb://${MONGO_ROOT_USERNAME:-admin}:${MONGODB_PASSWORD:-tradingagents123}@mongodb:27017/tradingagents?authSource=admin\"\n MONGODB_CONNECTION_STRING: \"mongodb://${MONGO_ROOT_USERNAME:-admin}:${MONGODB_PASSWORD:-tradingagents123}@mongodb:27017/tradingagents?authSource=admin\"\n # Redis配置\n REDIS_HOST: \"redis\"\n REDIS_PORT: \"6379\"\n REDIS_PASSWORD: ${REDIS_PASSWORD:-tradingagents123}\n REDIS_URL: \"redis://:${REDIS_PASSWORD:-tradingagents123}@redis:6379/0\"\n DOCKER_CONTAINER: \"true\"\n # MCP 持久化配置\n MCP_CONFIG_PATH: \"/app/config/mcp.json\"\n # Agent 配置持久化\n AGENT_CONFIG_DIR: \"/app/config/agents\"\n \n # 安全配置 — 生产环境必须修改以下密钥!使用: openssl rand -hex 32 生成\n JWT_SECRET: ${JWT_SECRET:?请在 .env 中设置 JWT_SECRET}\n JWT_ALGORITHM: \"HS256\"\n ACCESS_TOKEN_EXPIRE_MINUTES: \"480\"\n REFRESH_TOKEN_EXPIRE_DAYS: \"30\"\n CSRF_SECRET: ${CSRF_SECRET:?请在 .env 中设置 CSRF_SECRET}\n BCRYPT_ROUNDS: \"12\"\n # CORS配置(允许 Nginx 代理)— 注意:字段名必须与 Settings.ALLOWED_ORIGINS 一致\n ALLOWED_ORIGINS: \"*\"\n # AI模型API密钥(从.env文件读取,environment部分需要显式声明才能覆盖镜像内的占位符)\n DASHSCOPE_API_KEY: \"${DASHSCOPE_API_KEY}\"\n DASHSCOPE_ENABLED: \"${DASHSCOPE_ENABLED:-false}\"\n DEEPSEEK_API_KEY: \"${DEEPSEEK_API_KEY}\"\n DEEPSEEK_ENABLED: \"${DEEPSEEK_ENABLED:-false}\"\n OPENAI_API_KEY: \"${OPENAI_API_KEY}\"\n OPENAI_ENABLED: \"${OPENAI_ENABLED:-false}\"\n GOOGLE_API_KEY: \"${GOOGLE_API_KEY}\"\n GOOGLE_ENABLED: \"${GOOGLE_ENABLED:-false}\"\n BAIDU_API_KEY: \"${BAIDU_API_KEY}\"\n BAIDU_SECRET_KEY: \"${BAIDU_SECRET_KEY}\"\n BAIDU_ENABLED: \"${BAIDU_ENABLED:-false}\"\n OPENROUTER_API_KEY: \"${OPENROUTER_API_KEY}\"\n OPENROUTER_ENABLED: \"${OPENROUTER_ENABLED:-false}\"\n # 数据源API密钥\n TUSHARE_TOKEN: \"${TUSHARE_TOKEN}\"\n TUSHARE_ENABLED: \"${TUSHARE_ENABLED:-false}\"\n AKSHARE_ENABLED: \"${AKSHARE_ENABLED:-true}\"\n BAOSTOCK_ENABLED: \"${BAOSTOCK_ENABLED:-true}\"\n FINNHUB_API_KEY: \"${FINNHUB_API_KEY}\"\n FINNHUB_ENABLED: \"${FINNHUB_ENABLED:-false}\"\n # 首次初始化管理员密码(首次登录后请修改)\n INITIAL_ADMIN_PASSWORD: \"${INITIAL_ADMIN_PASSWORD:-admin123}\"\n depends_on:\n mongodb:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8000/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n\n # Vue 3前端服务\n frontend:\n # 支持本地构建或从Docker Hub拉取\n build:\n context: .\n dockerfile: docker/Dockerfile.frontend\n # 使用 latest 标签(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-frontend:latest\n container_name: tradingagents-frontend\n restart: unless-stopped\n expose:\n - \"80\"\n environment:\n TZ: \"Asia/Shanghai\"\n # 前端通过 Nginx 代理访问后端,使用相对路径\n VITE_API_BASE_URL: \"/api\"\n depends_on:\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\n # Nginx 反向代理\n # ports可以改为8080:80,或者其它的端口映射,前面一个是外部的端口,后面一个是容器内的端口\n nginx:\n image: docker.m.daocloud.io/library/nginx:alpine\n container_name: tradingagents-nginx\n restart: unless-stopped\n ports:\n - \"3000:80\"\n volumes:\n - ./docker/nginx/reverse-proxy.conf:/etc/nginx/nginx.conf:ro\n depends_on:\n - frontend\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\nvolumes:\n tradingagents_mongodb_data:\n driver: local\n tradingagents_redis_data:\n driver: local\n\nnetworks:\n tradingagents-network:\n driver: bridge\n\n"}, "e4d81ce81cd947079b87a13faf694cdd46785b3d": {"t": 1785769549.0797877, "n": 6590, "h": "c567bbbd19b18fdd", "c": "version: '3.8'\n\n# TradingAgents-CN Docker Compose配置(带 Nginx 反向代理)\n# 使用Docker Hub镜像 + Nginx 反向代理\n#\n# 使用方法:\n# 1. 复制.env.example为.env并配置环境变量\n# 2. 运行: docker compose up -d\n# 3. 访问: http://your-server (前端和后端API都通过80端口访问)\n#\n# 优势:\n# - 前端和后端通过同一端口访问,无跨域问题\n# - 统一入口,便于配置 HTTPS\n# - 可以添加负载均衡、缓存等功能\n\nservices:\n # MongoDB数据库\n mongodb:\n # 升级到 7.0 以匹配现代技术栈 (Python 3.10+, Debian 12)\n image: docker.m.daocloud.io/library/mongo:7.0\n container_name: tradingagents-mongodb\n restart: unless-stopped\n volumes:\n - tradingagents_mongodb_data:/data/db\n # 注意:不挂载初始化脚本,使用 MongoDB 自动创建的 root 用户\n # 应用会在首次运行时自动创建所需的集合和索引\n environment:\n MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USERNAME:-admin}\n MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_PASSWORD:-tradingagents123}\n MONGO_INITDB_DATABASE: tradingagents\n TZ: \"Asia/Shanghai\"\n networks:\n - tradingagents-network\n healthcheck:\n test: echo 'db.runCommand(\"ping\").ok' | mongosh localhost:27017/test --quiet\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 10s\n\n # Redis 缓存\n redis:\n image: docker.m.daocloud.io/library/redis:7-alpine\n container_name: tradingagents-redis\n restart: unless-stopped\n volumes:\n - tradingagents_redis_data:/data\n environment:\n TZ: \"Asia/Shanghai\"\n command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-tradingagents123}\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"redis-cli\", \"-a\", \"${REDIS_PASSWORD:-tradingagents123}\", \"ping\"]\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 5s\n\n # FastAPI后端服务\n backend:\n # 支持本地构建或从Docker Hub拉取\n # 本地构建: docker compose build backend\n # 拉取镜像: docker compose pull backend\n build:\n context: .\n dockerfile: docker/Dockerfile.backend\n # 使用 latest 标签以获取最新版本(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-backend:latest\n container_name: tradingagents-backend\n restart: unless-stopped\n expose:\n - \"8000\"\n volumes:\n # 运行时产物持久化(日志、数据、缓存、结果)\n - ./runtime:/app/runtime\n # 用户配置持久化挂载\n - ./config:/app/config\n env_file:\n - .env\n environment:\n TZ: \"Asia/Shanghai\"\n TRADINGAGENTS_LOG_LEVEL: \"INFO\"\n TRADINGAGENTS_LOG_DIR: \"/app/runtime/logs\"\n TRADINGAGENTS_LOG_FILE: \"/app/runtime/logs/tradingagents.log\"\n # MongoDB配置(使用 root 用户)\n MONGODB_HOST: \"mongodb\"\n MONGODB_PORT: \"27017\"\n MONGODB_USERNAME: ${MONGO_ROOT_USERNAME:-admin}\n MONGODB_PASSWORD: ${MONGODB_PASSWORD:-tradingagents123}\n MONGODB_DATABASE: \"tradingagents\"\n MONGODB_AUTH_SOURCE: \"admin\"\n # 注意:authSource=admin 表示在 admin 数据库中验证用户\n MONGODB_URL: \"mongodb://${MONGO_ROOT_USERNAME:-admin}:${MONGODB_PASSWORD:-tradingagents123}@mongodb:27017/tradingagents?authSource=admin\"\n MONGODB_CONNECTION_STRING: \"mongodb://${MONGO_ROOT_USERNAME:-admin}:${MONGODB_PASSWORD:-tradingagents123}@mongodb:27017/tradingagents?authSource=admin\"\n # Redis配置\n REDIS_HOST: \"redis\"\n REDIS_PORT: \"6379\"\n REDIS_PASSWORD: ${REDIS_PASSWORD:-tradingagents123}\n REDIS_URL: \"redis://:${REDIS_PASSWORD:-tradingagents123}@redis:6379/0\"\n DOCKER_CONTAINER: \"true\"\n # MCP 持久化配置\n MCP_CONFIG_PATH: \"/app/config/mcp.json\"\n # Agent 配置持久化\n AGENT_CONFIG_DIR: \"/app/config/agents\"\n \n # 安全配置\n JWT_SECRET: ${JWT_SECRET:-docker-jwt-secret-key-change-in-production-2024}\n JWT_ALGORITHM: \"HS256\"\n ACCESS_TOKEN_EXPIRE_MINUTES: \"480\"\n REFRESH_TOKEN_EXPIRE_DAYS: \"30\"\n CSRF_SECRET: ${CSRF_SECRET:-docker-csrf-secret-key-change-in-production-2024}\n BCRYPT_ROUNDS: \"12\"\n # CORS配置(允许 Nginx 代理)\n CORS_ORIGINS: \"*\"\n # AI模型API密钥(从.env文件读取,environment部分需要显式声明才能覆盖镜像内的占位符)\n DASHSCOPE_API_KEY: \"${DASHSCOPE_API_KEY}\"\n DASHSCOPE_ENABLED: \"${DASHSCOPE_ENABLED:-false}\"\n DEEPSEEK_API_KEY: \"${DEEPSEEK_API_KEY}\"\n DEEPSEEK_ENABLED: \"${DEEPSEEK_ENABLED:-false}\"\n OPENAI_API_KEY: \"${OPENAI_API_KEY}\"\n OPENAI_ENABLED: \"${OPENAI_ENABLED:-false}\"\n GOOGLE_API_KEY: \"${GOOGLE_API_KEY}\"\n GOOGLE_ENABLED: \"${GOOGLE_ENABLED:-false}\"\n BAIDU_API_KEY: \"${BAIDU_API_KEY}\"\n BAIDU_SECRET_KEY: \"${BAIDU_SECRET_KEY}\"\n BAIDU_ENABLED: \"${BAIDU_ENABLED:-false}\"\n OPENROUTER_API_KEY: \"${OPENROUTER_API_KEY}\"\n OPENROUTER_ENABLED: \"${OPENROUTER_ENABLED:-false}\"\n # 数据源API密钥\n TUSHARE_TOKEN: \"${TUSHARE_TOKEN}\"\n TUSHARE_ENABLED: \"${TUSHARE_ENABLED:-false}\"\n AKSHARE_ENABLED: \"${AKSHARE_ENABLED:-true}\"\n BAOSTOCK_ENABLED: \"${BAOSTOCK_ENABLED:-true}\"\n FINNHUB_API_KEY: \"${FINNHUB_API_KEY}\"\n FINNHUB_ENABLED: \"${FINNHUB_ENABLED:-false}\"\n # 首次初始化管理员密码(首次登录后请修改)\n INITIAL_ADMIN_PASSWORD: \"${INITIAL_ADMIN_PASSWORD:-admin123}\"\n depends_on:\n mongodb:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8000/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n\n # Vue 3前端服务\n frontend:\n # 支持本地构建或从Docker Hub拉取\n build:\n context: .\n dockerfile: docker/Dockerfile.frontend\n # 使用 latest 标签(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-frontend:latest\n container_name: tradingagents-frontend\n restart: unless-stopped\n expose:\n - \"80\"\n environment:\n TZ: \"Asia/Shanghai\"\n # 前端通过 Nginx 代理访问后端,使用相对路径\n VITE_API_BASE_URL: \"/api\"\n depends_on:\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\n # Nginx 反向代理\n # ports可以改为8080:80,或者其它的端口映射,前面一个是外部的端口,后面一个是容器内的端口\n nginx:\n image: docker.m.daocloud.io/library/nginx:alpine\n container_name: tradingagents-nginx\n restart: unless-stopped\n ports:\n - \"3000:80\"\n volumes:\n - ./docker/nginx/reverse-proxy.conf:/etc/nginx/nginx.conf:ro\n depends_on:\n - frontend\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\nvolumes:\n tradingagents_mongodb_data:\n driver: local\n tradingagents_redis_data:\n driver: local\n\nnetworks:\n tradingagents-network:\n driver: bridge\n\n"}, "2adf6c445a84a34e774e70b47b99fa4ccf294c54": {"t": 1785769550.5921469, "n": 6548, "h": "591162887d54388f", "c": "version: '3.8'\n\n# TradingAgents-CN Docker Compose配置(带 Nginx 反向代理)\n# 使用Docker Hub镜像 + Nginx 反向代理\n#\n# 使用方法:\n# 1. 复制.env.example为.env并配置环境变量\n# 2. 运行: docker compose up -d\n# 3. 访问: http://your-server (前端和后端API都通过80端口访问)\n#\n# 优势:\n# - 前端和后端通过同一端口访问,无跨域问题\n# - 统一入口,便于配置 HTTPS\n# - 可以添加负载均衡、缓存等功能\n\nservices:\n # MongoDB数据库\n mongodb:\n # 升级到 7.0 以匹配现代技术栈 (Python 3.10+, Debian 12)\n image: docker.1ms.run/mongo:7.0\n container_name: tradingagents-mongodb\n restart: unless-stopped\n volumes:\n - tradingagents_mongodb_data:/data/db\n # 注意:不挂载初始化脚本,使用 MongoDB 自动创建的 root 用户\n # 应用会在首次运行时自动创建所需的集合和索引\n environment:\n MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USERNAME:-admin}\n MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_PASSWORD:-tradingagents123}\n MONGO_INITDB_DATABASE: tradingagents\n TZ: \"Asia/Shanghai\"\n networks:\n - tradingagents-network\n healthcheck:\n test: echo 'db.runCommand(\"ping\").ok' | mongosh localhost:27017/test --quiet\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 10s\n\n # Redis 缓存\n redis:\n image: docker.1ms.run/redis:7-alpine\n container_name: tradingagents-redis\n restart: unless-stopped\n volumes:\n - tradingagents_redis_data:/data\n environment:\n TZ: \"Asia/Shanghai\"\n command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-tradingagents123}\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"redis-cli\", \"-a\", \"${REDIS_PASSWORD:-tradingagents123}\", \"ping\"]\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 5s\n\n # FastAPI后端服务\n backend:\n # 支持本地构建或从Docker Hub拉取\n # 本地构建: docker compose build backend\n # 拉取镜像: docker compose pull backend\n build:\n context: .\n dockerfile: docker/Dockerfile.backend\n # 使用 latest 标签以获取最新版本(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-backend:latest\n container_name: tradingagents-backend\n restart: unless-stopped\n expose:\n - \"8000\"\n volumes:\n # 运行时产物持久化(日志、数据、缓存、结果)\n - ./runtime:/app/runtime\n # 用户配置持久化挂载\n - ./config:/app/config\n env_file:\n - .env\n environment:\n TZ: \"Asia/Shanghai\"\n TRADINGAGENTS_LOG_LEVEL: \"INFO\"\n TRADINGAGENTS_LOG_DIR: \"/app/runtime/logs\"\n TRADINGAGENTS_LOG_FILE: \"/app/runtime/logs/tradingagents.log\"\n # MongoDB配置(使用 root 用户)\n MONGODB_HOST: \"mongodb\"\n MONGODB_PORT: \"27017\"\n MONGODB_USERNAME: ${MONGO_ROOT_USERNAME:-admin}\n MONGODB_PASSWORD: ${MONGODB_PASSWORD:-tradingagents123}\n MONGODB_DATABASE: \"tradingagents\"\n MONGODB_AUTH_SOURCE: \"admin\"\n # 注意:authSource=admin 表示在 admin 数据库中验证用户\n MONGODB_URL: \"mongodb://${MONGO_ROOT_USERNAME:-admin}:${MONGODB_PASSWORD:-tradingagents123}@mongodb:27017/tradingagents?authSource=admin\"\n MONGODB_CONNECTION_STRING: \"mongodb://${MONGO_ROOT_USERNAME:-admin}:${MONGODB_PASSWORD:-tradingagents123}@mongodb:27017/tradingagents?authSource=admin\"\n # Redis配置\n REDIS_HOST: \"redis\"\n REDIS_PORT: \"6379\"\n REDIS_PASSWORD: ${REDIS_PASSWORD:-tradingagents123}\n REDIS_URL: \"redis://:${REDIS_PASSWORD:-tradingagents123}@redis:6379/0\"\n DOCKER_CONTAINER: \"true\"\n # MCP 持久化配置\n MCP_CONFIG_PATH: \"/app/config/mcp.json\"\n # Agent 配置持久化\n AGENT_CONFIG_DIR: \"/app/config/agents\"\n \n # 安全配置\n JWT_SECRET: ${JWT_SECRET:-docker-jwt-secret-key-change-in-production-2024}\n JWT_ALGORITHM: \"HS256\"\n ACCESS_TOKEN_EXPIRE_MINUTES: \"480\"\n REFRESH_TOKEN_EXPIRE_DAYS: \"30\"\n CSRF_SECRET: ${CSRF_SECRET:-docker-csrf-secret-key-change-in-production-2024}\n BCRYPT_ROUNDS: \"12\"\n # CORS配置(允许 Nginx 代理)\n CORS_ORIGINS: \"*\"\n # AI模型API密钥(从.env文件读取,environment部分需要显式声明才能覆盖镜像内的占位符)\n DASHSCOPE_API_KEY: \"${DASHSCOPE_API_KEY}\"\n DASHSCOPE_ENABLED: \"${DASHSCOPE_ENABLED:-false}\"\n DEEPSEEK_API_KEY: \"${DEEPSEEK_API_KEY}\"\n DEEPSEEK_ENABLED: \"${DEEPSEEK_ENABLED:-false}\"\n OPENAI_API_KEY: \"${OPENAI_API_KEY}\"\n OPENAI_ENABLED: \"${OPENAI_ENABLED:-false}\"\n GOOGLE_API_KEY: \"${GOOGLE_API_KEY}\"\n GOOGLE_ENABLED: \"${GOOGLE_ENABLED:-false}\"\n BAIDU_API_KEY: \"${BAIDU_API_KEY}\"\n BAIDU_SECRET_KEY: \"${BAIDU_SECRET_KEY}\"\n BAIDU_ENABLED: \"${BAIDU_ENABLED:-false}\"\n OPENROUTER_API_KEY: \"${OPENROUTER_API_KEY}\"\n OPENROUTER_ENABLED: \"${OPENROUTER_ENABLED:-false}\"\n # 数据源API密钥\n TUSHARE_TOKEN: \"${TUSHARE_TOKEN}\"\n TUSHARE_ENABLED: \"${TUSHARE_ENABLED:-false}\"\n AKSHARE_ENABLED: \"${AKSHARE_ENABLED:-true}\"\n BAOSTOCK_ENABLED: \"${BAOSTOCK_ENABLED:-true}\"\n FINNHUB_API_KEY: \"${FINNHUB_API_KEY}\"\n FINNHUB_ENABLED: \"${FINNHUB_ENABLED:-false}\"\n # 首次初始化管理员密码(首次登录后请修改)\n INITIAL_ADMIN_PASSWORD: \"${INITIAL_ADMIN_PASSWORD:-admin123}\"\n depends_on:\n mongodb:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8000/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n\n # Vue 3前端服务\n frontend:\n # 支持本地构建或从Docker Hub拉取\n build:\n context: .\n dockerfile: docker/Dockerfile.frontend\n # 使用 latest 标签(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-frontend:latest\n container_name: tradingagents-frontend\n restart: unless-stopped\n expose:\n - \"80\"\n environment:\n TZ: \"Asia/Shanghai\"\n # 前端通过 Nginx 代理访问后端,使用相对路径\n VITE_API_BASE_URL: \"/api\"\n depends_on:\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\n # Nginx 反向代理\n # ports可以改为8080:80,或者其它的端口映射,前面一个是外部的端口,后面一个是容器内的端口\n nginx:\n image: docker.1ms.run/nginx:alpine\n container_name: tradingagents-nginx\n restart: unless-stopped\n ports:\n - \"3000:80\"\n volumes:\n - ./docker/nginx/reverse-proxy.conf:/etc/nginx/nginx.conf:ro\n depends_on:\n - frontend\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\nvolumes:\n tradingagents_mongodb_data:\n driver: local\n tradingagents_redis_data:\n driver: local\n\nnetworks:\n tradingagents-network:\n driver: bridge\n\n"}, "078f8c54cff924669228d1b452f633e2f2b8a28f": {"t": 1785769551.965841, "n": 6271, "h": "582ae36a701e3965", "c": "version: '3.8'\n\n# TradingAgents-CN Docker Compose配置(带 Nginx 反向代理)\n# 使用Docker Hub镜像 + Nginx 反向代理\n#\n# 使用方法:\n# 1. 复制.env.example为.env并配置环境变量\n# 2. 运行: docker compose up -d\n# 3. 访问: http://your-server (前端和后端API都通过80端口访问)\n#\n# 优势:\n# - 前端和后端通过同一端口访问,无跨域问题\n# - 统一入口,便于配置 HTTPS\n# - 可以添加负载均衡、缓存等功能\n\nservices:\n # MongoDB数据库\n mongodb:\n # 升级到 7.0 以匹配现代技术栈 (Python 3.10+, Debian 12)\n image: docker.1ms.run/mongo:7.0\n container_name: tradingagents-mongodb\n restart: unless-stopped\n volumes:\n - tradingagents_mongodb_data:/data/db\n # 注意:不挂载初始化脚本,使用 MongoDB 自动创建的 root 用户\n # 应用会在首次运行时自动创建所需的集合和索引\n environment:\n MONGO_INITDB_ROOT_USERNAME: admin\n MONGO_INITDB_ROOT_PASSWORD: tradingagents123\n MONGO_INITDB_DATABASE: tradingagents\n TZ: \"Asia/Shanghai\"\n networks:\n - tradingagents-network\n healthcheck:\n test: echo 'db.runCommand(\"ping\").ok' | mongosh localhost:27017/test --quiet\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 10s\n\n # Redis 缓存\n redis:\n image: docker.1ms.run/redis:7-alpine\n container_name: tradingagents-redis\n restart: unless-stopped\n volumes:\n - tradingagents_redis_data:/data\n environment:\n TZ: \"Asia/Shanghai\"\n command: redis-server --appendonly yes --requirepass tradingagents123\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"redis-cli\", \"-a\", \"tradingagents123\", \"ping\"]\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 5s\n\n # FastAPI后端服务\n backend:\n # 支持本地构建或从Docker Hub拉取\n # 本地构建: docker compose build backend\n # 拉取镜像: docker compose pull backend\n build:\n context: .\n dockerfile: docker/Dockerfile.backend\n # 使用 latest 标签以获取最新版本(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-backend:latest\n container_name: tradingagents-backend\n restart: unless-stopped\n expose:\n - \"8000\"\n volumes:\n # 运行时产物持久化(日志、数据、缓存、结果)\n - ./runtime:/app/runtime\n # 用户配置持久化挂载\n - ./config:/app/config\n env_file:\n - .env\n environment:\n TZ: \"Asia/Shanghai\"\n TRADINGAGENTS_LOG_LEVEL: \"INFO\"\n TRADINGAGENTS_LOG_DIR: \"/app/runtime/logs\"\n TRADINGAGENTS_LOG_FILE: \"/app/runtime/logs/tradingagents.log\"\n # MongoDB配置(使用 root 用户)\n MONGODB_HOST: \"mongodb\"\n MONGODB_PORT: \"27017\"\n MONGODB_USERNAME: \"admin\"\n MONGODB_PASSWORD: \"tradingagents123\"\n MONGODB_DATABASE: \"tradingagents\"\n MONGODB_AUTH_SOURCE: \"admin\"\n # 注意:authSource=admin 表示在 admin 数据库中验证用户\n MONGODB_URL: \"mongodb://admin:tradingagents123@mongodb:27017/tradingagents?authSource=admin\"\n MONGODB_CONNECTION_STRING: \"mongodb://admin:tradingagents123@mongodb:27017/tradingagents?authSource=admin\"\n # Redis配置\n REDIS_HOST: \"redis\"\n REDIS_PORT: \"6379\"\n REDIS_PASSWORD: \"tradingagents123\"\n REDIS_URL: \"redis://:tradingagents123@redis:6379/0\"\n DOCKER_CONTAINER: \"true\"\n # MCP 持久化配置\n MCP_CONFIG_PATH: \"/app/config/mcp.json\"\n # Agent 配置持久化\n AGENT_CONFIG_DIR: \"/app/config/agents\"\n \n # 安全配置\n JWT_SECRET: \"docker-jwt-secret-key-change-in-production-2024\"\n JWT_ALGORITHM: \"HS256\"\n ACCESS_TOKEN_EXPIRE_MINUTES: \"480\"\n REFRESH_TOKEN_EXPIRE_DAYS: \"30\"\n CSRF_SECRET: \"docker-csrf-secret-key-change-in-production-2024\"\n BCRYPT_ROUNDS: \"12\"\n # CORS配置(允许 Nginx 代理)\n CORS_ORIGINS: \"*\"\n # AI模型API密钥(从.env文件读取,environment部分需要显式声明才能覆盖镜像内的占位符)\n DASHSCOPE_API_KEY: \"${DASHSCOPE_API_KEY}\"\n DASHSCOPE_ENABLED: \"${DASHSCOPE_ENABLED:-false}\"\n DEEPSEEK_API_KEY: \"${DEEPSEEK_API_KEY}\"\n DEEPSEEK_ENABLED: \"${DEEPSEEK_ENABLED:-false}\"\n OPENAI_API_KEY: \"${OPENAI_API_KEY}\"\n OPENAI_ENABLED: \"${OPENAI_ENABLED:-false}\"\n GOOGLE_API_KEY: \"${GOOGLE_API_KEY}\"\n GOOGLE_ENABLED: \"${GOOGLE_ENABLED:-false}\"\n BAIDU_API_KEY: \"${BAIDU_API_KEY}\"\n BAIDU_SECRET_KEY: \"${BAIDU_SECRET_KEY}\"\n BAIDU_ENABLED: \"${BAIDU_ENABLED:-false}\"\n OPENROUTER_API_KEY: \"${OPENROUTER_API_KEY}\"\n OPENROUTER_ENABLED: \"${OPENROUTER_ENABLED:-false}\"\n # 数据源API密钥\n TUSHARE_TOKEN: \"${TUSHARE_TOKEN}\"\n TUSHARE_ENABLED: \"${TUSHARE_ENABLED:-false}\"\n AKSHARE_ENABLED: \"${AKSHARE_ENABLED:-true}\"\n BAOSTOCK_ENABLED: \"${BAOSTOCK_ENABLED:-true}\"\n FINNHUB_API_KEY: \"${FINNHUB_API_KEY}\"\n FINNHUB_ENABLED: \"${FINNHUB_ENABLED:-false}\"\n # 首次初始化管理员密码(首次登录后请修改)\n INITIAL_ADMIN_PASSWORD: \"${INITIAL_ADMIN_PASSWORD:-admin123}\"\n depends_on:\n mongodb:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8000/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n\n # Vue 3前端服务\n frontend:\n # 支持本地构建或从Docker Hub拉取\n build:\n context: .\n dockerfile: docker/Dockerfile.frontend\n # 使用 latest 标签(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-frontend:latest\n container_name: tradingagents-frontend\n restart: unless-stopped\n expose:\n - \"80\"\n environment:\n TZ: \"Asia/Shanghai\"\n # 前端通过 Nginx 代理访问后端,使用相对路径\n VITE_API_BASE_URL: \"/api\"\n depends_on:\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\n # Nginx 反向代理\n # ports可以改为8080:80,或者其它的端口映射,前面一个是外部的端口,后面一个是容器内的端口\n nginx:\n image: docker.1ms.run/nginx:alpine\n container_name: tradingagents-nginx\n restart: unless-stopped\n ports:\n - \"3000:80\"\n volumes:\n - ./docker/nginx/reverse-proxy.conf:/etc/nginx/nginx.conf:ro\n depends_on:\n - frontend\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\nvolumes:\n tradingagents_mongodb_data:\n driver: local\n tradingagents_redis_data:\n driver: local\n\nnetworks:\n tradingagents-network:\n driver: bridge\n\n"}, "26276eb602c653595564e20ba40425a7f7a0957c": {"t": 1785769553.337662, "n": 6174, "h": "adcd2cc2082b136c", "c": "version: '3.8'\n\n# TradingAgents-CN Docker Compose配置(带 Nginx 反向代理)\n# 使用Docker Hub镜像 + Nginx 反向代理\n#\n# 使用方法:\n# 1. 复制.env.example为.env并配置环境变量\n# 2. 运行: docker compose up -d\n# 3. 访问: http://your-server (前端和后端API都通过80端口访问)\n#\n# 优势:\n# - 前端和后端通过同一端口访问,无跨域问题\n# - 统一入口,便于配置 HTTPS\n# - 可以添加负载均衡、缓存等功能\n\nservices:\n # MongoDB数据库\n mongodb:\n # 升级到 7.0 以匹配现代技术栈 (Python 3.10+, Debian 12)\n image: docker.1ms.run/mongo:7.0\n container_name: tradingagents-mongodb\n restart: unless-stopped\n volumes:\n - tradingagents_mongodb_data:/data/db\n # 注意:不挂载初始化脚本,使用 MongoDB 自动创建的 root 用户\n # 应用会在首次运行时自动创建所需的集合和索引\n environment:\n MONGO_INITDB_ROOT_USERNAME: admin\n MONGO_INITDB_ROOT_PASSWORD: tradingagents123\n MONGO_INITDB_DATABASE: tradingagents\n TZ: \"Asia/Shanghai\"\n networks:\n - tradingagents-network\n healthcheck:\n test: echo 'db.runCommand(\"ping\").ok' | mongosh localhost:27017/test --quiet\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 10s\n\n # Redis 缓存\n redis:\n image: docker.1ms.run/redis:7-alpine\n container_name: tradingagents-redis\n restart: unless-stopped\n volumes:\n - tradingagents_redis_data:/data\n environment:\n TZ: \"Asia/Shanghai\"\n command: redis-server --appendonly yes --requirepass tradingagents123\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"redis-cli\", \"-a\", \"tradingagents123\", \"ping\"]\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 5s\n\n # FastAPI后端服务\n backend:\n # 支持本地构建或从Docker Hub拉取\n # 本地构建: docker compose build backend\n # 拉取镜像: docker compose pull backend\n build:\n context: .\n dockerfile: docker/Dockerfile.backend\n # 使用 latest 标签以获取最新版本(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-backend:latest\n container_name: tradingagents-backend\n restart: unless-stopped\n expose:\n - \"8000\"\n volumes:\n # 运行时产物持久化(日志、数据、缓存、结果)\n - ./runtime:/app/runtime\n # 用户配置持久化挂载\n - ./config:/app/config\n env_file:\n - .env\n environment:\n TZ: \"Asia/Shanghai\"\n TRADINGAGENTS_LOG_LEVEL: \"INFO\"\n TRADINGAGENTS_LOG_DIR: \"/app/runtime/logs\"\n TRADINGAGENTS_LOG_FILE: \"/app/runtime/logs/tradingagents.log\"\n # MongoDB配置(使用 root 用户)\n MONGODB_HOST: \"mongodb\"\n MONGODB_PORT: \"27017\"\n MONGODB_USERNAME: \"admin\"\n MONGODB_PASSWORD: \"tradingagents123\"\n MONGODB_DATABASE: \"tradingagents\"\n MONGODB_AUTH_SOURCE: \"admin\"\n # 注意:authSource=admin 表示在 admin 数据库中验证用户\n MONGODB_URL: \"mongodb://admin:tradingagents123@mongodb:27017/tradingagents?authSource=admin\"\n MONGODB_CONNECTION_STRING: \"mongodb://admin:tradingagents123@mongodb:27017/tradingagents?authSource=admin\"\n # Redis配置\n REDIS_HOST: \"redis\"\n REDIS_PORT: \"6379\"\n REDIS_PASSWORD: \"tradingagents123\"\n REDIS_URL: \"redis://:tradingagents123@redis:6379/0\"\n DOCKER_CONTAINER: \"true\"\n # MCP 持久化配置\n MCP_CONFIG_PATH: \"/app/config/mcp.json\"\n # Agent 配置持久化\n AGENT_CONFIG_DIR: \"/app/config/agents\"\n \n # 安全配置\n JWT_SECRET: \"docker-jwt-secret-key-change-in-production-2024\"\n JWT_ALGORITHM: \"HS256\"\n ACCESS_TOKEN_EXPIRE_MINUTES: \"480\"\n REFRESH_TOKEN_EXPIRE_DAYS: \"30\"\n CSRF_SECRET: \"docker-csrf-secret-key-change-in-production-2024\"\n BCRYPT_ROUNDS: \"12\"\n # CORS配置(允许 Nginx 代理)\n CORS_ORIGINS: \"*\"\n # AI模型API密钥(从.env文件读取,environment部分需要显式声明才能覆盖镜像内的占位符)\n DASHSCOPE_API_KEY: \"${DASHSCOPE_API_KEY}\"\n DASHSCOPE_ENABLED: \"${DASHSCOPE_ENABLED:-false}\"\n DEEPSEEK_API_KEY: \"${DEEPSEEK_API_KEY}\"\n DEEPSEEK_ENABLED: \"${DEEPSEEK_ENABLED:-false}\"\n OPENAI_API_KEY: \"${OPENAI_API_KEY}\"\n OPENAI_ENABLED: \"${OPENAI_ENABLED:-false}\"\n GOOGLE_API_KEY: \"${GOOGLE_API_KEY}\"\n GOOGLE_ENABLED: \"${GOOGLE_ENABLED:-false}\"\n BAIDU_API_KEY: \"${BAIDU_API_KEY}\"\n BAIDU_SECRET_KEY: \"${BAIDU_SECRET_KEY}\"\n BAIDU_ENABLED: \"${BAIDU_ENABLED:-false}\"\n OPENROUTER_API_KEY: \"${OPENROUTER_API_KEY}\"\n OPENROUTER_ENABLED: \"${OPENROUTER_ENABLED:-false}\"\n # 数据源API密钥\n TUSHARE_TOKEN: \"${TUSHARE_TOKEN}\"\n TUSHARE_ENABLED: \"${TUSHARE_ENABLED:-false}\"\n AKSHARE_ENABLED: \"${AKSHARE_ENABLED:-true}\"\n BAOSTOCK_ENABLED: \"${BAOSTOCK_ENABLED:-true}\"\n FINNHUB_API_KEY: \"${FINNHUB_API_KEY}\"\n FINNHUB_ENABLED: \"${FINNHUB_ENABLED:-false}\"\n depends_on:\n mongodb:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8000/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n\n # Vue 3前端服务\n frontend:\n # 支持本地构建或从Docker Hub拉取\n build:\n context: .\n dockerfile: docker/Dockerfile.frontend\n # 使用 latest 标签(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-frontend:latest\n container_name: tradingagents-frontend\n restart: unless-stopped\n expose:\n - \"80\"\n environment:\n TZ: \"Asia/Shanghai\"\n # 前端通过 Nginx 代理访问后端,使用相对路径\n VITE_API_BASE_URL: \"/api\"\n depends_on:\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\n # Nginx 反向代理\n # ports可以改为8080:80,或者其它的端口映射,前面一个是外部的端口,后面一个是容器内的端口\n nginx:\n image: docker.1ms.run/nginx:alpine\n container_name: tradingagents-nginx\n restart: unless-stopped\n ports:\n - \"3000:80\"\n volumes:\n - ./docker/nginx/reverse-proxy.conf:/etc/nginx/nginx.conf:ro\n depends_on:\n - frontend\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://127.0.0.1:80/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\nvolumes:\n tradingagents_mongodb_data:\n driver: local\n tradingagents_redis_data:\n driver: local\n\nnetworks:\n tradingagents-network:\n driver: bridge\n\n"}, "4f6bba2183fe97f79fcfeb3e3dd2e5c84bf3c795": {"t": 1785769555.9122834, "n": 6177, "h": "eb57bffb8119bcd2", "c": "version: '3.8'\n\n# TradingAgents-CN Docker Compose配置(带 Nginx 反向代理)\n# 使用Docker Hub镜像 + Nginx 反向代理\n#\n# 使用方法:\n# 1. 复制.env.example为.env并配置环境变量\n# 2. 运行: docker compose up -d\n# 3. 访问: http://your-server (前端和后端API都通过80端口访问)\n#\n# 优势:\n# - 前端和后端通过同一端口访问,无跨域问题\n# - 统一入口,便于配置 HTTPS\n# - 可以添加负载均衡、缓存等功能\n\nservices:\n # MongoDB数据库\n mongodb:\n # 升级到 7.0 以匹配现代技术栈 (Python 3.10+, Debian 12)\n image: docker.1ms.run/mongo:7.0\n container_name: tradingagents-mongodb\n restart: unless-stopped\n volumes:\n - tradingagents_mongodb_data:/data/db\n # 注意:不挂载初始化脚本,使用 MongoDB 自动创建的 root 用户\n # 应用会在首次运行时自动创建所需的集合和索引\n environment:\n MONGO_INITDB_ROOT_USERNAME: admin\n MONGO_INITDB_ROOT_PASSWORD: tradingagents123\n MONGO_INITDB_DATABASE: tradingagents\n TZ: \"Asia/Shanghai\"\n networks:\n - tradingagents-network\n healthcheck:\n test: echo 'db.runCommand(\"ping\").ok' | mongosh localhost:27017/test --quiet\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 10s\n\n # Redis 缓存\n redis:\n image: docker.1ms.run/redis:7-alpine\n container_name: tradingagents-redis\n restart: unless-stopped\n volumes:\n - tradingagents_redis_data:/data\n environment:\n TZ: \"Asia/Shanghai\"\n command: redis-server --appendonly yes --requirepass tradingagents123\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"redis-cli\", \"-a\", \"tradingagents123\", \"ping\"]\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 5s\n\n # FastAPI后端服务\n backend:\n # 支持本地构建或从Docker Hub拉取\n # 本地构建: docker compose build backend\n # 拉取镜像: docker compose pull backend\n build:\n context: .\n dockerfile: docker/Dockerfile.backend\n # 使用 latest 标签以获取最新版本(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-backend:latest\n container_name: tradingagents-backend\n restart: unless-stopped\n expose:\n - \"8000\"\n volumes:\n # 运行时产物持久化(日志、数据、缓存、结果)\n - ./runtime:/app/runtime\n # 用户配置持久化挂载\n - ./config:/app/config\n env_file:\n - .env\n environment:\n TZ: \"Asia/Shanghai\"\n TRADINGAGENTS_LOG_LEVEL: \"INFO\"\n TRADINGAGENTS_LOG_DIR: \"/app/runtime/logs\"\n TRADINGAGENTS_LOG_FILE: \"/app/runtime/logs/tradingagents.log\"\n # MongoDB配置(使用 root 用户)\n MONGODB_HOST: \"mongodb\"\n MONGODB_PORT: \"27017\"\n MONGODB_USERNAME: \"admin\"\n MONGODB_PASSWORD: \"tradingagents123\"\n MONGODB_DATABASE: \"tradingagents\"\n MONGODB_AUTH_SOURCE: \"admin\"\n # 注意:authSource=admin 表示在 admin 数据库中验证用户\n MONGODB_URL: \"mongodb://admin:tradingagents123@mongodb:27017/tradingagents?authSource=admin\"\n MONGODB_CONNECTION_STRING: \"mongodb://admin:tradingagents123@mongodb:27017/tradingagents?authSource=admin\"\n # Redis配置\n REDIS_HOST: \"redis\"\n REDIS_PORT: \"6379\"\n REDIS_PASSWORD: \"tradingagents123\"\n REDIS_URL: \"redis://:tradingagents123@redis:6379/0\"\n DOCKER_CONTAINER: \"true\"\n # MCP 持久化配置\n MCP_CONFIG_PATH: \"/app/config/mcp.json\"\n # Agent 配置持久化\n AGENT_CONFIG_DIR: \"/app/config/agents\"\n \n # 安全配置\n JWT_SECRET: \"docker-jwt-secret-key-change-in-production-2024\"\n JWT_ALGORITHM: \"HS256\"\n ACCESS_TOKEN_EXPIRE_MINUTES: \"480\"\n REFRESH_TOKEN_EXPIRE_DAYS: \"30\"\n CSRF_SECRET: \"docker-csrf-secret-key-change-in-production-2024\"\n BCRYPT_ROUNDS: \"12\"\n # CORS配置(允许 Nginx 代理)\n CORS_ORIGINS: \"*\"\n # AI模型API密钥(从.env文件读取,environment部分需要显式声明才能覆盖镜像内的占位符)\n DASHSCOPE_API_KEY: \"${DASHSCOPE_API_KEY}\"\n DASHSCOPE_ENABLED: \"${DASHSCOPE_ENABLED:-false}\"\n DEEPSEEK_API_KEY: \"${DEEPSEEK_API_KEY}\"\n DEEPSEEK_ENABLED: \"${DEEPSEEK_ENABLED:-false}\"\n OPENAI_API_KEY: \"${OPENAI_API_KEY}\"\n OPENAI_ENABLED: \"${OPENAI_ENABLED:-false}\"\n GOOGLE_API_KEY: \"${GOOGLE_API_KEY}\"\n GOOGLE_ENABLED: \"${GOOGLE_ENABLED:-false}\"\n BAIDU_API_KEY: \"${BAIDU_API_KEY}\"\n BAIDU_SECRET_KEY: \"${BAIDU_SECRET_KEY}\"\n BAIDU_ENABLED: \"${BAIDU_ENABLED:-false}\"\n OPENROUTER_API_KEY: \"${OPENROUTER_API_KEY}\"\n OPENROUTER_ENABLED: \"${OPENROUTER_ENABLED:-false}\"\n # 数据源API密钥\n TUSHARE_TOKEN: \"${TUSHARE_TOKEN}\"\n TUSHARE_ENABLED: \"${TUSHARE_ENABLED:-false}\"\n AKSHARE_ENABLED: \"${AKSHARE_ENABLED:-true}\"\n BAOSTOCK_ENABLED: \"${BAOSTOCK_ENABLED:-true}\"\n FINNHUB_API_KEY: \"${FINNHUB_API_KEY}\"\n FINNHUB_ENABLED: \"${FINNHUB_ENABLED:-false}\"\n depends_on:\n mongodb:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8000/api/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n\n # Vue 3前端服务\n frontend:\n # 支持本地构建或从Docker Hub拉取\n build:\n context: .\n dockerfile: docker/Dockerfile.frontend\n # 使用 latest 标签(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-frontend:latest\n container_name: tradingagents-frontend\n restart: unless-stopped\n expose:\n - \"80\"\n environment:\n TZ: \"Asia/Shanghai\"\n # 前端通过 Nginx 代理访问后端,使用相对路径\n VITE_API_BASE_URL: \"/api\"\n depends_on:\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://localhost:80\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\n # Nginx 反向代理\n # ports可以改为8080:80,或者其它的端口映射,前面一个是外部的端口,后面一个是容器内的端口\n nginx:\n image: docker.1ms.run/nginx:alpine\n container_name: tradingagents-nginx\n restart: unless-stopped\n ports:\n - \"3000:80\" \n volumes:\n - docker/nginx/reverse-proxy.conf:/etc/nginx/nginx.conf:ro\n depends_on:\n - frontend\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://localhost:80/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\nvolumes:\n tradingagents_mongodb_data:\n driver: local\n tradingagents_redis_data:\n driver: local\n\nnetworks:\n tradingagents-network:\n driver: bridge\n\n"}, "a9918cd9fd889b37e1afe580fc466126fd8bfb34": {"t": 1785769560.2332416, "n": 6190, "h": "8a83061dfb96ff9c", "c": "version: '3.8'\n\n# TradingAgents-CN Docker Compose配置(带 Nginx 反向代理)\n# 使用Docker Hub镜像 + Nginx 反向代理\n#\n# 使用方法:\n# 1. 复制.env.example为.env并配置环境变量\n# 2. 运行: docker compose up -d\n# 3. 访问: http://your-server (前端和后端API都通过80端口访问)\n#\n# 优势:\n# - 前端和后端通过同一端口访问,无跨域问题\n# - 统一入口,便于配置 HTTPS\n# - 可以添加负载均衡、缓存等功能\n\nservices:\n # MongoDB数据库\n mongodb:\n # 升级到 7.0 以匹配现代技术栈 (Python 3.10+, Debian 12)\n image: docker.1ms.run/mongo:7.0\n container_name: tradingagents-mongodb\n restart: unless-stopped\n volumes:\n - tradingagents_mongodb_data:/data/db\n # 注意:不挂载初始化脚本,使用 MongoDB 自动创建的 root 用户\n # 应用会在首次运行时自动创建所需的集合和索引\n environment:\n MONGO_INITDB_ROOT_USERNAME: admin\n MONGO_INITDB_ROOT_PASSWORD: tradingagents123\n MONGO_INITDB_DATABASE: tradingagents\n TZ: \"Asia/Shanghai\"\n networks:\n - tradingagents-network\n healthcheck:\n test: echo 'db.runCommand(\"ping\").ok' | mongosh localhost:27017/test --quiet\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 10s\n\n # Redis 缓存\n redis:\n image: docker.1ms.run/redis:7-alpine\n container_name: tradingagents-redis\n restart: unless-stopped\n volumes:\n - tradingagents_redis_data:/data\n environment:\n TZ: \"Asia/Shanghai\"\n command: redis-server --appendonly yes --requirepass tradingagents123\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"redis-cli\", \"-a\", \"tradingagents123\", \"ping\"]\n interval: 10s\n timeout: 5s\n retries: 5\n start_period: 5s\n\n # FastAPI后端服务\n backend:\n # 支持本地构建或从Docker Hub拉取\n # 本地构建: docker compose build backend\n # 拉取镜像: docker compose pull backend\n build:\n context: .\n dockerfile: docker/Dockerfile.backend\n # 使用 latest 标签以获取最新版本(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-backend:latest\n container_name: tradingagents-backend\n restart: unless-stopped\n expose:\n - \"8000\"\n volumes:\n - ./logs:/app/logs\n # 用户配置持久化挂载\n - ./config:/app/config\n # 数据目录映射\n - ./data:/app/data\n env_file:\n - .env\n environment:\n TZ: \"Asia/Shanghai\"\n TRADINGAGENTS_LOG_LEVEL: \"INFO\"\n TRADINGAGENTS_LOG_DIR: \"/app/logs\"\n TRADINGAGENTS_LOG_FILE: \"/app/logs/tradingagents.log\"\n # MongoDB配置(使用 root 用户)\n MONGODB_HOST: \"mongodb\"\n MONGODB_PORT: \"27017\"\n MONGODB_USERNAME: \"admin\"\n MONGODB_PASSWORD: \"tradingagents123\"\n MONGODB_DATABASE: \"tradingagents\"\n MONGODB_AUTH_SOURCE: \"admin\"\n # 注意:authSource=admin 表示在 admin 数据库中验证用户\n MONGODB_URL: \"mongodb://admin:tradingagents123@mongodb:27017/tradingagents?authSource=admin\"\n MONGODB_CONNECTION_STRING: \"mongodb://admin:tradingagents123@mongodb:27017/tradingagents?authSource=admin\"\n # Redis配置\n REDIS_HOST: \"redis\"\n REDIS_PORT: \"6379\"\n REDIS_PASSWORD: \"tradingagents123\"\n REDIS_URL: \"redis://:tradingagents123@redis:6379/0\"\n DOCKER_CONTAINER: \"true\"\n # MCP 持久化配置\n MCP_CONFIG_PATH: \"/app/config/mcp.json\"\n # Agent 配置持久化\n AGENT_CONFIG_DIR: \"/app/config/agents\"\n \n # 安全配置\n JWT_SECRET: \"docker-jwt-secret-key-change-in-production-2024\"\n JWT_ALGORITHM: \"HS256\"\n ACCESS_TOKEN_EXPIRE_MINUTES: \"480\"\n REFRESH_TOKEN_EXPIRE_DAYS: \"30\"\n CSRF_SECRET: \"docker-csrf-secret-key-change-in-production-2024\"\n BCRYPT_ROUNDS: \"12\"\n # CORS配置(允许 Nginx 代理)\n CORS_ORIGINS: \"*\"\n # AI模型API密钥(从.env文件读取,environment部分需要显式声明才能覆盖镜像内的占位符)\n DASHSCOPE_API_KEY: \"${DASHSCOPE_API_KEY}\"\n DASHSCOPE_ENABLED: \"${DASHSCOPE_ENABLED:-false}\"\n DEEPSEEK_API_KEY: \"${DEEPSEEK_API_KEY}\"\n DEEPSEEK_ENABLED: \"${DEEPSEEK_ENABLED:-false}\"\n OPENAI_API_KEY: \"${OPENAI_API_KEY}\"\n OPENAI_ENABLED: \"${OPENAI_ENABLED:-false}\"\n GOOGLE_API_KEY: \"${GOOGLE_API_KEY}\"\n GOOGLE_ENABLED: \"${GOOGLE_ENABLED:-false}\"\n BAIDU_API_KEY: \"${BAIDU_API_KEY}\"\n BAIDU_SECRET_KEY: \"${BAIDU_SECRET_KEY}\"\n BAIDU_ENABLED: \"${BAIDU_ENABLED:-false}\"\n OPENROUTER_API_KEY: \"${OPENROUTER_API_KEY}\"\n OPENROUTER_ENABLED: \"${OPENROUTER_ENABLED:-false}\"\n # 数据源API密钥\n TUSHARE_TOKEN: \"${TUSHARE_TOKEN}\"\n TUSHARE_ENABLED: \"${TUSHARE_ENABLED:-false}\"\n AKSHARE_ENABLED: \"${AKSHARE_ENABLED:-true}\"\n BAOSTOCK_ENABLED: \"${BAOSTOCK_ENABLED:-true}\"\n FINNHUB_API_KEY: \"${FINNHUB_API_KEY}\"\n FINNHUB_ENABLED: \"${FINNHUB_ENABLED:-false}\"\n depends_on:\n mongodb:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8000/api/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n\n # Vue 3前端服务\n frontend:\n # 支持本地构建或从Docker Hub拉取\n build:\n context: .\n dockerfile: docker/Dockerfile.frontend\n # 使用 latest 标签(已注释,强制使用本地构建)\n # image: ghcr.1ms.run/bg8cfb/tradingagents-frontend:latest\n container_name: tradingagents-frontend\n restart: unless-stopped\n expose:\n - \"80\"\n environment:\n TZ: \"Asia/Shanghai\"\n # 前端通过 Nginx 代理访问后端,使用相对路径\n VITE_API_BASE_URL: \"/api\"\n depends_on:\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://localhost:80\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\n # Nginx 反向代理\n # ports可以改为8080:80,或者其它的端口映射,前面一个是外部的端口,后面一个是容器内的端口\n nginx:\n image: docker.1ms.run/nginx:alpine\n container_name: tradingagents-nginx\n restart: unless-stopped\n ports:\n - \"3000:80\" \n volumes:\n # 路径已更新为相对于项目根目录\n - ./docker/nginx/reverse-proxy.conf:/etc/nginx/nginx.conf:ro\n depends_on:\n - frontend\n - backend\n networks:\n - tradingagents-network\n healthcheck:\n test: [\"CMD\", \"wget\", \"--quiet\", \"--tries=1\", \"--spider\", \"http://localhost:80/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\nvolumes:\n tradingagents_mongodb_data:\n driver: local\n tradingagents_redis_data:\n driver: local\n\nnetworks:\n tradingagents-network:\n driver: bridge\n\n"}}}}