背景:同步分支刻意排除 ./database(保护线上 SQLite),于是镜像里新增的迁移文件
永远进不了卷 —— 用户按 README 只做 `pull && up -d` 时新表不会出现(Nothing to
migrate)→ 新功能 500。此前「从上游 v2.1 / 旧版镜像升上来」必须人工拷迁移文件再手跑
migrate(2026-10-01 发标签功能时就是人工做的)。
现在 entrypoint 每次启动自动收尾,且处处以「不伤数据、不挡启动」为前提:
① 守卫先行:SQLite 走只读探测(file:...?mode=ro,不启 Laravel、不写库文件),
其它库走 migrate:status;只认「有 migrations 记账表的真站点」,空卷/手搓库/非标
安装一律跳过,绝不自作主张建表。
② 只补**缺失**的迁移文件(逐个判存在再 cp -p,绝不覆盖用户自己改过的那份)。
③ 真有 pending 才备份 SQLite 三件套(保留最近 3 份)再迁移 —— 没有 pending 就一句话
结束,免得每次重启白备份一份库。
④ 一律降权到 www-data 执行(root 跑会把 -wal/-shm 造成 root 属主 → 站点写不进库)。
⑤ 任何失败只打日志、绝不 exit:本脚本 set -eu,非 0 冒泡出去容器就起不来(配合
restart: unless-stopped 即无限重启)。失败时下次启动自动重试。
开关:AUTO_MIGRATE=0 关闭(默认开)。
CI:tools/upgrade-test.sh 新增「4b) 自动迁移用例」——构造真 v2.1 形状的卷(migrations
记账表里只有上游 10 条 + 卷里没有那两个 fork 迁移文件),重启新镜像后断言:迁移文件被
自动补进卷、tags/image_tag 自动建好、记账涨到 12、**哨兵数据指纹逐字节不变**、迁移前
自动备份存在。
版本号:src/config/app.php 的 fork 版本串 v3.1 → v3.2。
Lsky Pro
☁ Your photo album on the cloud.
官网 · 文档 · 社区 · 演示 · Telegram 群组
Warning
开源版本已停止维护,不再进行新特性更新和 bug 修复。
master 分支为未安装三方拓展的版本,通常包含了最新未发布版本的一些实验性新特性和修复补丁,正式版本请点击 这里 下载。
发现 bug 请提交 issues (提问前建议阅读提问的智慧)
有任何想法、建议、或分享,请移步 社区
📌 TODO
- 支持
本地等多种第三方云储存AWS S3、阿里云 OSS、腾讯云 COS、七牛云、又拍云、SFTP、FTP、WebDav、Minio - 多种数据库驱动支持,
MySQL 5.7+、PostgreSQL 9.6+、SQLite 3.8.8+、SQL Server 2017+ - 支持配置使用多种缓存驱动,
Memcached、Redis、DynamoDB、等其他关系型数据库,默认以文件的方式缓存 - 多图上传、拖拽上传、粘贴上传、动态设置策略上传、复制、一键复制链接
- 强大的图片管理功能,瀑布流展示,支持鼠标右键、单选多选、重命名等操作
- 自由度极高的角色组配置,可以为每个组配置多个储存策略,同时储存策略可以配置多个角色组
- 可针对角色组设置上传文件、文件夹路径命名规则、上传频率限制、图片审核等功能
- 支持图片水印、文字水印、水印平铺、设置水印位置、X/y 轴偏移量设置、旋转角度等
- 支持通过接口上传、管理图片、管理相册
- 支持在线增量更新、跨版本更新
- 图片广场
🛠 安装要求
- PHP >= 8.0.2
- BCMath PHP 扩展
- Ctype PHP 扩展
- DOM PHP 拓展
- Fileinfo PHP 扩展
- JSON PHP 扩展
- Mbstring PHP 扩展
- OpenSSL PHP 扩展
- PDO PHP 扩展
- Tokenizer PHP 扩展
- XML PHP 扩展
- Imagick 拓展
- exec、shell_exec 函数
- readlink、symlink 函数
- putenv、getenv 函数
- chmod、chown、fileperms 函数
😋 鸣谢
- Laravel
- Tailwindcss
- Fontawesome
- Echarts
- Intervention/image
- league/flysystem
- overtrue
- Jquery
- jQuery-File-Upload
- Alpinejs
- Viewer.js
- DragSelect
- Justified-Gallery
- Clipboard.js
💰 捐赠
Lsky Pro 的开发和更新等,都是作者在业余时间独立开发,并免费开源使用,如果您认可我的作品,并且觉得对你有所帮助我愿意接受来自各方面的捐赠😃。
| 支付宝 | 微信 |
|---|---|
![]() |
![]() |
🤩 Stargazers over time
📧 联系我
- Email: i@wispx.cn
📃 开源许可
Copyright (c) 2018-present Lsky Pro.



