# 生产独立编排: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.10 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} - WX_MSG_TOKEN=${WX_MSG_TOKEN:-} - 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: