gongxiangp2/docker-compose.shadow.yml
chenpei 7326e273e1 fix: harden media upload and release safety
Protect upload cleanup and atomic completion paths, add durable media worker leases and brand asset validation, and introduce verified migration/bootstrap/deployment gates.
2026-08-12 18:04:08 +08:00

116 lines
4.6 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 当前影子环境发布不使用本文件作为入口。
# 影子发布以 scripts/git-incremental-deploy.ps1 -Target shadow 为准;本文件仅作本地/单机/基础环境参考。
# 不要按此文件推断当前线上影子容器启动参数、uploads 挂载或健康检查。
services:
redis-shadow:
image: redis:7-alpine
container_name: youyidian-3d-redis-shadow
restart: unless-stopped
ports:
- "6380:6379" # 影子系统使用 6380 端口,避免与正式系统冲突
volumes:
- redis-shadow-data:/data
- ./redis.conf:/usr/local/etc/redis/redis.conf
command: redis-server /usr/local/etc/redis/redis.conf
networks:
- app-shadow-network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
app-shadow:
image: youyidian-3d-material:local-deploy
# build:
# context: .
# dockerfile: Dockerfile
container_name: youyidian-3d-material-shadow
restart: unless-stopped
ports:
- "5320:3000" # 影子系统使用 5320 端口,正式系统是 4320
# 内存限制配置(防止内存泄漏影响系统)
deploy:
resources:
limits:
memory: 6G # 硬限制:最大6GB
reservations:
memory: 512M # 软限制:保证至少512MB
# 健康检查
healthcheck:
test: ["CMD", "node", "-e", "process.exit(0)"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
dns:
- 223.5.5.5 # 阿里云DNS
- 8.8.8.8 # Google DNS
- 114.114.114.114 # 114DNS
environment:
- NODE_ENV=production
- UPLOAD_DIR=/app/uploads
# 影子系统连接到 stage 数据库(需要先创建 lobechat_stage 数据库)
- DATABASE_URL=${SHADOW_DATABASE_URL:?SHADOW_DATABASE_URL is required}
- DATABASE_DRIVER=node
- KEY_VAULTS_SECRET=${SHADOW_KEY_VAULTS_SECRET:?SHADOW_KEY_VAULTS_SECRET is required}
- VECTOR_DB=pgvector
- PGVECTOR_DB_URL=${SHADOW_PGVECTOR_DB_URL:?SHADOW_PGVECTOR_DB_URL is required}
- STORAGE_PROVIDER=s3
- S3_ENDPOINT=http://192.168.58.20:9000 # 内网地址,服务器直接访问不走FRP
- S3_BUCKET=gongxiangpan
- S3_ACCESS_KEY_ID=${SHADOW_S3_ACCESS_KEY_ID:?SHADOW_S3_ACCESS_KEY_ID is required}
- S3_SECRET_ACCESS_KEY=${SHADOW_S3_SECRET_ACCESS_KEY:?SHADOW_S3_SECRET_ACCESS_KEY is required}
- S3_REGION=us-east-1
- S3_PUBLIC_DOMAIN=https://s3.jiansun.vip/gongxiangpan
- S3_ENABLE_PATH_STYLE=1
- S3_SET_ACL=1
- S3_PREVIEW_URL_EXPIRE_IN=7200
- NEXT_PUBLIC_S3_FILE_PATH=由壹点AI/
- APP_PUBLIC_URL=http://192.168.58.20:5320
# 影子系统使用独立的 URL,避免与正式系统登录态混淆
- NEXTAUTH_URL=http://192.168.58.20:5320
# 内网地址配置(用于流量分离:内网用户走内网网络,不占用外网带宽)
- SERVER_IP=192.168.58.20
- MINIO_API_PORT=9000
- NEXTAUTH_SECRET=${SHADOW_NEXTAUTH_SECRET:?SHADOW_NEXTAUTH_SECRET is required}
- GEMINI_API_KEY=${GEMINI_API_KEY:?GEMINI_API_KEY is required}
- GEMINI_API_BASE_URL=https://api.huandutech.com/v1
- GEMINI_MODEL=gemini-2.0-flash-exp
- DINGTALK_CLIENT_ID=ding1bs1gxwrcfu16x0f
- DINGTALK_CLIENT_SECRET=${DINGTALK_CLIENT_SECRET:?DINGTALK_CLIENT_SECRET is required}
- DINGTALK_ROBOT_CODE=${DINGTALK_ROBOT_CODE:-}
- DINGTALK_PERFORMANCE_SURVEY_NOTIFICATION_CHANNEL=${DINGTALK_PERFORMANCE_SURVEY_NOTIFICATION_CHANNEL:-work_notice}
- DINGTALK_ROBOT_OTO_TEST_USER_IDS=${DINGTALK_ROBOT_OTO_TEST_USER_IDS:-}
# 视频转码配置:默认 720P H.265、10 秒片段;单实例单任务、单线程
- VIDEO_PREVIEW_RESOLUTION=720
- VIDEO_CLIP_DURATION=10
- VIDEO_PREVIEW_CRF=20
- VIDEO_CLIP_CRF=24
- VIDEO_TRANSCODE_THREADS=1
- VIDEO_TRANSCODE_MAX_CONCURRENT=1
- VIDEO_TRANSCODE_TIMEOUT=3600000
- VIDEO_MAX_TEMP_FILE_SIZE=10737418240
- VIDEO_TRANSCODE_RUNTIME_DIR=/app/uploads/.video-transcode-runtime
# 下载 Token 密钥(用于外部接口文件下载鉴权)
- DOWNLOAD_TOKEN_SECRET=${SHADOW_DOWNLOAD_TOKEN_SECRET:?SHADOW_DOWNLOAD_TOKEN_SECRET is required}
# Redis配置(影子系统使用独立的 Redis 实例)
- USE_REDIS=true
- REDIS_URL=redis://redis-shadow:6379
volumes:
- ./uploads-shadow:/app/uploads # 影子系统使用独立的 uploads 目录
depends_on:
redis-shadow:
condition: service_healthy
networks:
- app-shadow-network
volumes:
redis-shadow-data:
driver: local
networks:
app-shadow-network:
driver: bridge