forked from hsliuping/TradingAgents-CN
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.hub.nginx.yml
More file actions
206 lines (197 loc) · 6.53 KB
/
docker-compose.hub.nginx.yml
File metadata and controls
206 lines (197 loc) · 6.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
version: '3.8'
# TradingAgents-CN v1.0.0-preview Docker Compose配置(带 Nginx 反向代理)
# 使用Docker Hub镜像 + Nginx 反向代理
#
# 使用方法:
# 1. 复制.env.example为.env并配置环境变量
# 2. 运行: docker-compose -f docker-compose.hub.nginx.yml up -d
# 3. 访问: http://your-server (前端和后端API都通过80端口访问)
#
# 优势:
# - 前端和后端通过同一端口访问,无跨域问题
# - 统一入口,便于配置 HTTPS
# - 可以添加负载均衡、缓存等功能
services:
# MongoDB数据库
mongodb:
image: mongo:4.4
container_name: tradingagents-mongodb
restart: unless-stopped
ports:
- "27017:27017"
volumes:
- tradingagents_mongodb_data:/data/db
# 注意:不挂载初始化脚本,使用 MongoDB 自动创建的 root 用户
# 应用会在首次运行时自动创建所需的集合和索引
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: tradingagents123
MONGO_INITDB_DATABASE: tradingagents
TZ: "Asia/Shanghai"
networks:
- tradingagents-network
healthcheck:
test: echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
# Redis缓存
redis:
image: redis:7-alpine
container_name: tradingagents-redis
restart: unless-stopped
ports:
- "6379:6379"
volumes:
- tradingagents_redis_data:/data
environment:
TZ: "Asia/Shanghai"
command: redis-server --appendonly yes --requirepass tradingagents123
networks:
- tradingagents-network
healthcheck:
test: ["CMD", "redis-cli", "-a", "tradingagents123", "ping"]
interval: 10s
timeout: 5s
retries: 5
start_period: 5s
# FastAPI后端服务
backend:
# 支持本地构建或从Docker Hub拉取
# 本地构建: docker-compose -f docker-compose.hub.nginx.yml build backend
# 拉取镜像: docker-compose -f docker-compose.hub.nginx.yml pull backend
build:
context: .
dockerfile: Dockerfile.backend
image: hsliup/tradingagents-backend:latest
container_name: tradingagents-backend
restart: unless-stopped
expose:
- "8000"
volumes:
- ./logs:/app/logs
# 不映射config目录,使用镜像内的配置文件
# 如需修改配置,请修改代码后重新构建镜像
# - ./config:/app/config
- ./data:/app/data
env_file:
- .env
environment:
TZ: "Asia/Shanghai"
TRADINGAGENTS_LOG_LEVEL: "INFO"
TRADINGAGENTS_LOG_DIR: "/app/logs"
TRADINGAGENTS_LOG_FILE: "/app/logs/tradingagents.log"
# MongoDB配置(使用 root 用户)
MONGODB_HOST: "mongodb"
MONGODB_PORT: "27017"
MONGODB_USERNAME: "admin"
MONGODB_PASSWORD: "tradingagents123"
MONGODB_DATABASE: "tradingagents"
MONGODB_AUTH_SOURCE: "admin"
# 注意:authSource=admin 表示在 admin 数据库中验证用户
MONGODB_URL: "mongodb://admin:tradingagents123@mongodb:27017/tradingagents?authSource=admin"
MONGODB_CONNECTION_STRING: "mongodb://admin:tradingagents123@mongodb:27017/tradingagents?authSource=admin"
# Redis配置
REDIS_HOST: "redis"
REDIS_PORT: "6379"
REDIS_PASSWORD: "tradingagents123"
REDIS_URL: "redis://:tradingagents123@redis:6379/0"
DOCKER_CONTAINER: "true"
# 安全配置
JWT_SECRET: "docker-jwt-secret-key-change-in-production-2024"
JWT_ALGORITHM: "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES: "480"
REFRESH_TOKEN_EXPIRE_DAYS: "30"
CSRF_SECRET: "docker-csrf-secret-key-change-in-production-2024"
BCRYPT_ROUNDS: "12"
# CORS配置(允许 Nginx 代理)
CORS_ORIGINS: "*"
# AI模型API密钥(从.env文件读取,environment部分需要显式声明才能覆盖镜像内的占位符)
DASHSCOPE_API_KEY: "${DASHSCOPE_API_KEY}"
DASHSCOPE_ENABLED: "${DASHSCOPE_ENABLED:-false}"
DEEPSEEK_API_KEY: "${DEEPSEEK_API_KEY}"
DEEPSEEK_ENABLED: "${DEEPSEEK_ENABLED:-false}"
OPENAI_API_KEY: "${OPENAI_API_KEY}"
OPENAI_ENABLED: "${OPENAI_ENABLED:-false}"
GOOGLE_API_KEY: "${GOOGLE_API_KEY}"
GOOGLE_ENABLED: "${GOOGLE_ENABLED:-false}"
BAIDU_API_KEY: "${BAIDU_API_KEY}"
BAIDU_SECRET_KEY: "${BAIDU_SECRET_KEY}"
BAIDU_ENABLED: "${BAIDU_ENABLED:-false}"
OPENROUTER_API_KEY: "${OPENROUTER_API_KEY}"
OPENROUTER_ENABLED: "${OPENROUTER_ENABLED:-false}"
# 数据源API密钥
TUSHARE_TOKEN: "${TUSHARE_TOKEN}"
TUSHARE_ENABLED: "${TUSHARE_ENABLED:-false}"
AKSHARE_ENABLED: "${AKSHARE_ENABLED:-true}"
BAOSTOCK_ENABLED: "${BAOSTOCK_ENABLED:-true}"
FINNHUB_API_KEY: "${FINNHUB_API_KEY}"
FINNHUB_ENABLED: "${FINNHUB_ENABLED:-false}"
depends_on:
mongodb:
condition: service_healthy
redis:
condition: service_healthy
networks:
- tradingagents-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# Vue 3前端服务
frontend:
# 支持本地构建或从Docker Hub拉取
build:
context: .
dockerfile: Dockerfile.frontend
image: hsliup/tradingagents-frontend:latest
container_name: tradingagents-frontend
restart: unless-stopped
expose:
- "80"
environment:
TZ: "Asia/Shanghai"
# 前端通过 Nginx 代理访问后端,使用相对路径
VITE_API_BASE_URL: "/api"
depends_on:
- backend
networks:
- tradingagents-network
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:80"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
# Nginx 反向代理
# ports可以改为8080:80,或者其它的端口映射,前面一个是外部的端口,后面一个是容器内的端口
nginx:
image: nginx:alpine
container_name: tradingagents-nginx
restart: unless-stopped
ports:
- "80:80"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- frontend
- backend
networks:
- tradingagents-network
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:80/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
volumes:
tradingagents_mongodb_data:
driver: local
tradingagents_redis_data:
driver: local
networks:
tradingagents-network:
driver: bridge