compose.yaml
Rama master · réplica de lectura del repositorio original.
services:
peach:
image: longmeidao/peach:${PEACH_VERSION:-edge}
build: .
init: true
restart: unless-stopped
stop_grace_period: 75s
# 检查命令沿用镜像的 HEALTHCHECK,这里只定时间参数,默认值与镜像相同;写入敏感的宿主机见 docs/DOCKER.md。
healthcheck:
interval: ${PEACH_HEALTHCHECK_INTERVAL:-30s}
timeout: ${PEACH_HEALTHCHECK_TIMEOUT:-5s}
start_period: ${PEACH_HEALTHCHECK_START_PERIOD:-60s}
retries: ${PEACH_HEALTHCHECK_RETRIES:-3}
# 容器标准输出的日志;PEACH_LOG_DRIVER 只能是 json-file 或 local,两者都按下面的大小轮转。
logging:
driver: ${PEACH_LOG_DRIVER:-json-file}
options:
max-size: ${PEACH_LOG_MAX_SIZE:-10m}
max-file: ${PEACH_LOG_MAX_FILE:-3}
environment:
# Watchtower 只换同一标签的新镜像;标签不是 edge 时配置页不给「一键更新」。
PEACH_IMAGE_TAG: ${PEACH_VERSION:-edge}
# 可选:还没有访问设置时,启动就用它设访问密码(8–256 个字符),首次设置页不再问;已有访问设置时忽略。
# 密码写在 .env 的 PEACH_ACCESS_PASSWORD,再取消下一行的注释。
# PEACH_ACCESS_PASSWORD: ${PEACH_ACCESS_PASSWORD}
labels:
# 只有带这个标签的容器归 watchtower profile 管(WATCHTOWER_LABEL_ENABLE)。
com.centurylinklabs.watchtower.enable: "true"
ports:
# NAS / 局域网:在 .env 中设置 PEACH_BIND 为宿主机的局域网 IP。
# 127.0.0.1 仅供宿主机访问;PEACH_PORT 可修改宿主机端口。
- "${PEACH_BIND:-127.0.0.1}:${PEACH_PORT:-8900}:8900"
volumes:
- peach-data:/data
# 只装一键更新的令牌:Peach 首次启动时生成,watchtower 只读这一个卷,看不到 /data。
- peach-update:/update
- type: bind
source: ${PEACH_MEDIA_ROOT:-./media}
target: /media
read_only: true
bind:
propagation: rslave
create_host_path: false
# 可选:配置页「一键更新」(docs/DOCKER.md、ADR-0140)。`docker compose --profile watchtower up -d`
# 才会起它。它挂着 Docker socket,等于宿主 root;只开要令牌的更新接口,不发布端口,不定时轮询。
watchtower:
image: nickfedor/watchtower:1.23.2
profiles: [watchtower]
restart: unless-stopped
depends_on:
# 令牌在 Peach 起服务前写好;等它就绪再启动,Watchtower 启动时读到的就是那份文件。
peach:
condition: service_healthy
environment:
WATCHTOWER_HTTP_API_ENDPOINTS: update
WATCHTOWER_HTTP_API_TOKEN: /peach-update/watchtower-token
WATCHTOWER_LABEL_ENABLE: "true"
# 换下的旧镜像已失去 edge 标签,留着只占盘;回滚按版本号标签从 Docker Hub 重新拉。
WATCHTOWER_CLEANUP: "true"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- peach-update:/peach-update:ro
volumes:
peach-data:
peach-update: