Files
ai-dimension/docker-compose.prod.yml
T

98 lines
2.9 KiB
YAML

# 生产独立编排:docker compose -f docker-compose.prod.yml up -d
# 资源基线:宿主机 3.6G 内存,六容器合计限额 ~1.2G,其余留给系统/nginx/ai-art
services:
mongodb:
image: mongo:7
restart: unless-stopped
# WiredTiger 缓存压到 256M,配合容器限额防内存膨胀
command: ["--wiredTigerCacheSizeGB", "0.25"]
mem_limit: 512m
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
volumes:
- mongo_data:/data/db
dimension-server:
image: dim-server:v1.3.8
restart: unless-stopped
depends_on:
- mongodb
mem_limit: 384m
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
ports:
- "127.0.0.1:3001:3001"
environment:
- TZ=Asia/Shanghai
- NODE_ENV=production
- PORT=3001
- MONGODB_URI=mongodb://${MONGO_USER:-wdkj}:${MONGO_PASS}@mongodb:27017/wdkj?authSource=admin
- JWT_SECRET=${JWT_SECRET:?need JWT_SECRET}
- SITE_URL=https://www.wdkj.yuzhiran.com.cn
- INVITE_REWARD_CREDITS=${INVITE_REWARD_CREDITS:-100}
- COST_PER_WORK=${COST_PER_WORK:-10}
- FREE_DAILY_QUOTA=${FREE_DAILY_QUOTA:-20}
- MEMBER_DAILY_QUOTA=${MEMBER_DAILY_QUOTA:-60}
# 登录/支付/管理后台/邮件(值来自生产 .env,缺失会导致对应功能失败)
- JWT_EXPIRE=${JWT_EXPIRE:-7d}
- WX_APPID=${WX_APPID:-}
- WX_SECRET=${WX_SECRET:-}
- WX_PAY_MCH_ID=${WX_PAY_MCH_ID:-}
- WX_PAY_SERIAL_NO=${WX_PAY_SERIAL_NO:-}
- WX_PAY_MCH_CERT_SERIAL=${WX_PAY_MCH_CERT_SERIAL:-}
- WX_PAY_API_KEY=${WX_PAY_API_KEY:-}
- WX_PAY_NOTIFY_URL=${WX_PAY_NOTIFY_URL:-}
- ADMIN_USERNAME=${ADMIN_USERNAME:-admin}
- ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
- ADMIN_EMAIL=${ADMIN_EMAIL:-}
- LOG_LEVEL=${LOG_LEVEL:-info}
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
- SMTP_HOST=${SMTP_HOST:-}
- SMTP_PORT=${SMTP_PORT:-}
- SMTP_USER=${SMTP_USER:-}
- SMTP_PASS=${SMTP_PASS:-}
- SMTP_FROM=${SMTP_FROM:-}
volumes:
# 运行数据持久化到宿主机(日志/微信支付证书),容器重建不丢
- ./server/data/logs:/app/logs
- ./server/data/certs:/app/certs
dimension-admin:
image: nginx:alpine
restart: unless-stopped
mem_limit: 64m
logging:
driver: json-file
options:
max-size: "5m"
max-file: "2"
volumes:
- ./deploy/dist/admin:/usr/share/nginx/html:ro
- ./deploy/nginx/admin.conf:/etc/nginx/conf.d/default.conf:ro
ports:
- "127.0.0.1:3010:80"
dimension-h5:
image: nginx:alpine
restart: unless-stopped
mem_limit: 64m
logging:
driver: json-file
options:
max-size: "5m"
max-file: "2"
volumes:
- ./deploy/dist/h5:/usr/share/nginx/html:ro
- ./deploy/nginx/h5.conf:/etc/nginx/conf.d/default.conf:ro
ports:
- "127.0.0.1:3020:80"
volumes:
mongo_data: