Files
UHD_Media_Tool/docker-compose.yml
T
rootandClaude Opus 5.5 3792868816 build(docker): static ffprobe, --allow-run=ffprobe,sha256sum, three supervised processes
entrypoint runs api + worker (io) + worker:agent; compose/runbooks document
WORKER_CONCURRENCY, WORKER_AGENT_CONCURRENCY, ORGANIZE_WALK_MAX_FILES.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-27 22:15:43 +08:00

72 lines
2.5 KiB
YAML

# 生产/试运行部署:只有两个服务 —— app(单容器:API + worker(io 组)+ worker:agent + web 静态,单端口 4380)+ postgres。
# 用法(详见 docs/runbook/deploy.md):
# cp docker/compose.env.example .env # 按注释生成 SECRET_MASTER_KEY / POSTGRES_PASSWORD
# docker compose up -d --build
# docker compose logs app | grep -i setup # 首次启动打印一次性 setup token
# 开发只起数据库用 docker-compose.dev.yml。
name: umt
x-logging: &logging
driver: json-file
options:
max-size: "10m"
max-file: "5"
services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: umt
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?请设置 POSTGRES_PASSWORD}
POSTGRES_DB: umt
volumes:
- umt-pg-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U umt -d umt"]
interval: 5s
timeout: 3s
retries: 20
stop_grace_period: 30s
logging: *logging
app:
build:
context: .
args:
APP_VERSION: ${APP_VERSION:-}
APT_MIRROR: ${APT_MIRROR:-}
image: uhd-media-tool:${APP_VERSION:-latest}
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
NODE_ENV: production
DATABASE_URL: postgres://umt:${POSTGRES_PASSWORD}@postgres:5432/umt
SECRET_MASTER_KEY: ${SECRET_MASTER_KEY:?请设置 SECRET_MASTER_KEY(openssl rand -hex 32)}
LOG_LEVEL: ${LOG_LEVEL:-info}
# 运行用户:DATA_DIR 由 entrypoint chown 成它;媒体库/下载目录需对它可读写
PUID: ${PUID:-10001}
PGID: ${PGID:-10001}
BACKUP_KEEP: ${BACKUP_KEEP:-14}
# worker 并发:io 组(下载提交/入库复制/清理/对账/抓取等)与 agent 组(runAgent/resolveDecision)分池
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-4}
WORKER_AGENT_CONCURRENCY: ${WORKER_AGENT_CONCURRENCY:-2}
# 手动按路径整理时递归遍历的文件数上限
ORGANIZE_WALK_MAX_FILES: ${ORGANIZE_WALK_MAX_FILES:-5000}
ports:
- "${UMT_BIND:-0.0.0.0}:${UMT_PORT:-4380}:4380"
volumes:
# 应用数据:agent-sessions/ backups/ exports/ tmp/
- umt-data:/data
# 媒体库根与下载缓存目录按需挂载(容器内路径 = 控制台里登记的库根 / 路径映射 local 前缀):
# - /srv/media:/media
# - /srv/downloads:/downloads
stop_grace_period: 15s
logging: *logging
volumes:
umt-pg-data:
umt-data: