主要改动: 1. TCP缓冲区优化(16MB)- 解决公网上传速度慢问题 2. 并发数降低到1-3 - 避免4并发导致ERR_CONNECTION_RESET 3. 动态并发控制 - 根据网络环境自动调整 4. Nginx超时增加到120s - 支持大分片上传 5. 上传进度修复 - 修复剩余时间计算 6. 新增任务-页面上传器和详情组件 7. 统一部署文档为deploy-remote-build.ps1 问题修复: - 公网用户上传从200-900KB/s提升到预期3-5MB/s - 内网用户上传更稳定,无连接重置错误 - UploadProgress组件剩余时间计算修正 Co-Authored-By: Claude <noreply@anthropic.com>
103 lines
3.2 KiB
YAML
103 lines
3.2 KiB
YAML
version: '3.8'
|
||
|
||
services:
|
||
app:
|
||
build:
|
||
context: .
|
||
dockerfile: Dockerfile
|
||
container_name: youyidian-3d-material
|
||
restart: unless-stopped
|
||
ports:
|
||
- "4320:3000"
|
||
dns:
|
||
- 223.5.5.5 # 阿里云DNS
|
||
- 8.8.8.8 # Google DNS
|
||
- 114.114.114.114 # 114DNS
|
||
# 内存限制配置(防止内存泄漏影响系统)
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
memory: 6G # 硬限制:最大6GB(正常1-2GB + 缓冲2-3GB + 安全边界1GB)
|
||
reservations:
|
||
memory: 512M # 软限制:保证至少512MB
|
||
# 健康检查
|
||
healthcheck:
|
||
test: ["CMD", "node", "-e", "process.exit(0)"]
|
||
interval: 30s
|
||
timeout: 10s
|
||
retries: 3
|
||
start_period: 40s
|
||
environment:
|
||
- NODE_ENV=production
|
||
- DATABASE_URL=postgresql://gongxiangpan:gongxiangpan123@192.168.58.20:5432/lobechat
|
||
- DATABASE_DRIVER=node
|
||
- KEY_VAULTS_SECRET=/7DcksaICAECGjB38O3s8AE0wj2NoGzwIog0iUUMugY=
|
||
- VECTOR_DB=pgvector
|
||
- PGVECTOR_DB_URL=postgresql://gongxiangpan:gongxiangpan123@192.168.58.20:5432/lobechat
|
||
- STORAGE_PROVIDER=s3
|
||
- S3_ENDPOINT=http://192.168.58.20:9000
|
||
- S3_BUCKET=gongxiangpan
|
||
- S3_ACCESS_KEY_ID=GXPAccessKey2025
|
||
- S3_SECRET_ACCESS_KEY=GXPSecretKey2025SecureMinIO
|
||
- S3_REGION=us-east-1
|
||
- S3_PUBLIC_DOMAIN=https://s3.yydd.ai/gongxiangpan
|
||
- S3_ENABLE_PATH_STYLE=1
|
||
- S3_SET_ACL=1
|
||
- S3_PREVIEW_URL_EXPIRE_IN=7200
|
||
- NEXT_PUBLIC_S3_FILE_PATH=由壹点AI/
|
||
- NEXTAUTH_URL=http://192.168.58.20:4320
|
||
# 内网地址配置(用于流量分离:内网用户走内网网络,不占用外网带宽)
|
||
- SERVER_IP=192.168.58.20
|
||
- MINIO_API_PORT=9000
|
||
- NEXTAUTH_SECRET=your-secret-key-change-this-in-production
|
||
- GEMINI_API_KEY=sk-NqhrkeBudn6pUtStnOuOnGyDfasogvFSsex4YgjDXJU3SK3E
|
||
- GEMINI_API_BASE_URL=https://api.huandutech.com/v1
|
||
- GEMINI_MODEL=gemini-2.0-flash-exp
|
||
- DINGTALK_CLIENT_ID=ding1bs1gxwrcfu16x0f
|
||
- DINGTALK_CLIENT_SECRET=qUmj_gBDzpPEYR3RA3hRqKzwu11a986O-wKfP8V5lDHXn7XJrXxW79KIeP5G-mcY
|
||
# 视频转码配置
|
||
- VIDEO_TRANSCODE_CODEC=libx265
|
||
- VIDEO_TRANSCODE_PRESET=medium
|
||
- VIDEO_TRANSCODE_CRF=22
|
||
- VIDEO_AUDIO_BITRATE=160k
|
||
# 下载 Token 密钥(用于外部接口文件下载鉴权)
|
||
- DOWNLOAD_TOKEN_SECRET=yydd-product-package-download-token-secret-2026
|
||
# Redis配置(用于上传会话存储)
|
||
- USE_REDIS=true
|
||
- REDIS_URL=redis://redis:6379
|
||
volumes:
|
||
- ./uploads:/app/uploads
|
||
networks:
|
||
- app-network
|
||
depends_on:
|
||
- redis
|
||
|
||
redis:
|
||
image: redis:7-alpine
|
||
container_name: gongxiangpan-redis
|
||
restart: unless-stopped
|
||
command: redis-server --maxmemory 100mb --maxmemory-policy allkeys-lru --save ""
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
memory: 128M
|
||
reservations:
|
||
memory: 32M
|
||
healthcheck:
|
||
test: ["CMD", "redis-cli", "ping"]
|
||
interval: 30s
|
||
timeout: 10s
|
||
retries: 3
|
||
networks:
|
||
- app-network
|
||
volumes:
|
||
- redis-data:/data
|
||
|
||
networks:
|
||
app-network:
|
||
driver: bridge
|
||
|
||
volumes:
|
||
redis-data:
|
||
|