-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
125 lines (111 loc) · 6.76 KB
/
docker-compose.yml
File metadata and controls
125 lines (111 loc) · 6.76 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
version: "3.9"
# ── 亚马逊运营硅基军团 — Docker Compose 部署配置 ─────────────────────────────────
# 包含:API Server + Redis(缓存) + PostgreSQL(可选数据存储)
# 适用场景:开发/测试/生产环境
services:
# ════════════════════════════════════════════════════════════════════════════
# 主服务:API Server
# ════════════════════════════════════════════════════════════════════════════
api:
build:
context: .
dockerfile: Dockerfile
container_name: amazon-ops-api
restart: unless-stopped
ports:
- "${API_PORT:-8080}:8080"
environment:
# ── API Server ────────────────────────────────────────────────────────
HOST: "0.0.0.0"
PORT: "8080"
LOG_LEVEL: "${LOG_LEVEL:-INFO}"
DEBUG: "${DEBUG:-false}"
# ── 认证 ────────────────────────────────────────────────────────────────
AMAZON_OPS_API_KEY: "${AMAZON_OPS_API_KEY}"
AMAZON_OPS_API_SECRET: "${AMAZON_OPS_API_SECRET}"
AMAZON_OPS_TIER: "${AMAZON_OPS_TIER:-professional}"
AMAZON_OPS_CLIENT_NAME: "${AMAZON_OPS_CLIENT_NAME:-default}"
# ── LLM Provider ────────────────────────────────────────────────────────
OPENAI_API_KEY: "${OPENAI_API_KEY:-}"
DEEPSEEK_API_KEY: "${DEEPSEEK_API_KEY:-}"
ANTHROPIC_API_KEY: "${ANTHROPIC_API_KEY:-}"
# ── 亚马逊广告API(AMS)─────────────────────────────────────────────────
AMS_CLIENT_ID: "${AMS_CLIENT_ID:-}"
AMS_CLIENT_SECRET: "${AMS_CLIENT_SECRET:-}"
AMS_REFRESH_TOKEN: "${AMS_REFRESH_TOKEN:-}"
AMS_PROFILE_ID: "${AMS_PROFILE_ID:-}"
# ── Redis(会话缓存)───────────────────────────────────────────────────
REDIS_HOST: "redis"
REDIS_PORT: "6379"
REDIS_PASSWORD: "${REDIS_PASSWORD:-}"
# ── 可选:PostgreSQL ───────────────────────────────────────────────────
DATABASE_URL: "${DATABASE_URL:-}"
# ── GUI Agent ──────────────────────────────────────────────────────────
GUI_AGENT_ENABLED: "${GUI_AGENT_ENABLED:-false}"
PLAYWRIGHT_ENABLED: "${PLAYWRIGHT_ENABLED:-false}"
# ── CORS(生产环境应限制具体域名)────────────────────────────────────────
CORS_ORIGINS: "${CORS_ORIGINS:-*}"
depends_on:
redis:
condition: service_healthy
healthcheck:
test: ["CMD", "python", "-c", "import httpx; httpx.get('http://localhost:8080/health').raise_for_status()"]
interval: 30s
timeout: 10s
retries: 3
start_period: 15s
volumes:
# 持久化数据(可选)
- ./data:/app/data:ro
# 配置文件(开发用,生产用环境变量)
- ./.env:/app/.env:ro
networks:
- amazon-ops-net
# ════════════════════════════════════════════════════════════════════════════
# Redis:会话缓存与速率限制存储
# ════════════════════════════════════════════════════════════════════════════
redis:
image: redis:7-alpine
container_name: amazon-ops-redis
restart: unless-stopped
ports:
- "${REDIS_PORT:-6379}:6379"
command: redis-server --requirepass "${REDIS_PASSWORD:-}" --maxmemory 256mb --maxmemory-policy allkeys-lru
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
interval: 10s
timeout: 5s
retries: 3
networks:
- amazon-ops-net
# ════════════════════════════════════════════════════════════════════════════
# Nginx:反向代理 + HTTPS + 静态文件(可选)
# ════════════════════════════════════════════════════════════════════════════
# nginx:
# image: nginx:alpine
# container_name: amazon-ops-nginx
# restart: unless-stopped
# ports:
# - "443:443"
# - "80:80"
# volumes:
# - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
# - ./nginx/ssl:/etc/nginx/ssl:ro # 放入证书后取消注释
# depends_on:
# - api
# networks:
# - amazon-ops-net
# ══════════════════════════════════════════════════════════════════════════════
# 网络
# ══════════════════════════════════════════════════════════════════════════════
networks:
amazon-ops-net:
driver: bridge
# ══════════════════════════════════════════════════════════════════════════════
# 持久化卷
# ══════════════════════════════════════════════════════════════════════════════
volumes:
redis_data:
driver: local