升级
升级
imgli 升级的核心原则:先备份数据目录(与数据库),再换二进制 / 镜像,再启动。库表由进程启动时迁移;一般不需要手工 SQL。
升级前检查
- 阅读目标版本的 CHANGELOG 与 Release 说明。
- 确认当前
imgli version与部署路径。 - 备份:
- SQLite:停服或热拷贝
data_dir下imgli.db(及-wal/-shm若存在)+ 对象文件(本地盘或对象存储本身的备份策略)。 - Postgres:
pg_dump+ 对象存储备份。
- SQLite:停服或热拷贝
- 计划回滚:保留旧二进制 / 旧镜像 tag。
仓库提供示例脚本:deploy/ops/backup-sqlite.sh(按你的路径改)。
二进制升级
# 1) 备份
sudo systemctl stop imgli
sudo cp -a /opt/imgli/data /opt/imgli/data.bak.$(date +%Y%m%d)
# 2) 装新版本(示例固定 tag)
curl -fsSL https://raw.githubusercontent.com/yixian-huang/imgli/main/scripts/install.sh \
| sudo env PREFIX=/usr/local/bin sh -s -- v0.1.1
# 3) 启动并看日志
sudo systemctl start imgli
sudo journalctl -u imgli -f
curl -fsS https://img.example.com/healthz
安装脚本会覆盖 PREFIX 下的 imgli 可执行文件;配置文件与 data 目录不会被脚本改动。
Docker / Compose 升级
# 拉指定 tag(避免 latest 漂移)
docker pull ghcr.io/yixian-huang/imgli:v0.1.1
docker stop imgli && docker rm imgli
# 用同一 volume 与同一环境变量重新 run
docker run -d --name imgli --restart unless-stopped \
-p 8686:8686 -v imgli-data:/data \
-e IMGLI_BASE_URL=https://img.example.com \
-e IMGLI_TRUST_PROXY=true \
ghcr.io/yixian-huang/imgli:v0.1.1
Compose:
# 在 compose 中改 image: ghcr.io/yixian-huang/imgli:vX.Y.Z
docker compose pull
docker compose up -d
不要删除 volume,否则丢库。
源码部署升级
git fetch --tags
git checkout v0.1.1 # 或 main
make build
# 替换运行中的二进制后重启服务
数据库与存储迁移命令
CLI 子命令(运维向):
| 命令 | 用途 |
|---|---|
imgli serve | 正常服务(含自动 migrate) |
imgli migrate | 仅跑库迁移(不启 HTTP) |
imgli storage-migrate | 存储侧迁移(按版本说明使用) |
imgli version | 打印构建版本 |
生产变更窗口建议:
imgli migrate -config /opt/imgli/imgli.yaml
# 确认无错误后再 systemctl start
回滚
systemctl stop/ 停容器。- 换回旧二进制或旧镜像 tag。
- 若新版本已写不可逆库变更:用升级前的 DB 备份恢复(先读 CHANGELOG;多数小版本向前兼容)。
- 启动 →
/healthz→ 抽样打开一张旧图与一张新上传。
升级后验收
-
imgli version为目标版本 -
/healthz200 - 登录后台,站点设置仍在
- 上传一张图,直链可打开
- API Token 上传仍可用
- (若用 S3/CDN)公开图 302 目标正确;私有图匿名不可下(见 安全)