OpenList 的 Docker Compose 写法与三种升级方式
容器一多就该用 Compose 管理:一条文件写清镜像、端口、目录映射,升级也只是一组固定命令。
基础版 compose 文件
在任意目录创建 docker-compose.yml:
services:
openlist:
image: 'openlistteam/openlist:latest'
container_name: openlist
user: '1000:1000' # 换成你实际的 UID:GID
volumes:
- './data:/opt/openlist/data'
ports:
- '5244:5244'
environment:
- TZ=Asia/Shanghai
- UMASK=022
restart: unless-stopped
注意 user 一项:v4.1.0 之后的镜像不再使用 PUID/PGID 环境变量,改用 user 字段指定运行身份;同时要保证映射目录 ./data 的属主与之一致,否则程序写不了数据库。
启动与日常管理:
docker compose up -d # 启动
docker compose logs -f # 看日志(首次启动的初始密码在这里)
docker compose down # 停止
升级方式一:手动拉新镜像
docker compose pull
docker compose down
docker compose up -d
数据在映射目录里,容器随便删都不丢。
升级方式二:Watchtower 一键更新
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower openlist --cleanup --run-once
末尾的 openlist 是容器名,按实际改。适合挂后台定时跑。
升级后还是旧版?
最常见原因是只重启了容器、没换镜像:容器内还是旧文件。正确顺序是先 pull 拉新镜像,再 down + up -d 重建容器。另外确认 image 字段写的是 latest 而不是某个固定版本号。
与下载器同栈部署
官方文档提供了一份把 aria2、qBittorrent、Transmission 和 OpenList 写进同一个 compose 文件的增强版示例(配合 离线下载 使用),要点是给下载器的临时目录做相同的路径映射,让 OpenList 容器能看到下载完成的文件。