Files
lsky-pro-docker/.dockerignore
T
mole404 c9a4ea1471 docs: README 整篇重写为介绍 + 部署;补 CI/构建卫生
README(659 行 → 176 行):只保留「这是什么」与「怎么部署/维护」——快速开始、首次安装、
升级(注明不需要 --force-recreate)、回滚(给真实存在的 sha-<commit> 标签)、备份与恢复
(整目录 tar,并说明 SQLite 开了 WAL 会短暂出现 -wal/-shm)、常见配置(端口/证书路径/
APACHE_* 六个变量与实际默认值)、许可与致谢。不再记录任何修复史或差异逐条。
所有具体值(镜像名、容器名、端口、卷路径、WEB_PORT/HTTPS_PORT、MPM 默认值、PHP/Laravel
版本、回滚标签)都对着源码与实机逐条核过。

构建与 CI:
- .dockerignore 补 src/storage/logs/*(+ 保留 .gitignore 占位):本机开发日志会被
  COPY src/ 带进镜像(含本机绝对路径与错误栈)。用一份 moby 语义 matcher 验过排除生效、
  且不影响 fontawesome 字体等构建必需品。
- update-composer-lock.yaml:两处 curl … | php 改成与 Dockerfile 同款「先落盘 → 官方
  installer.sig → 校验 96 位 hex → sha384sum -c - → 再执行 → 删临时文件」(哈希不写死);
  注释里的 9.52.17 与「5 条公告」校正为 9.52.22 / 4 条(OSV 实查)。
- build-image.yaml:扩展自证那段的结论文案改成与实际一致(硬断言只有 pdo_sqlite,
  其余仅打印供人工比对)——sqlite3 对本站不是必需,钉死它会在无害变动时误红。
- tools/vendor-upstream.sh:去掉不存在的 test/run.sh,改为 cd test && npm test。
2026-09-30 09:03:04 +08:00

54 lines
3.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 构建上下文里只需要这些:Dockerfile、src/、*.template、entrypoint.sh
# 其余都是仓库自己的东西,进上下文只会拖慢构建(尤其 test/node_modules)
.git
.github
test
patches
tools
docker-compose.yaml
README.md
*.md
# ---------------------------------------------------------------------------
# fork 追加(F12):别把开发机的东西烤进构建上下文 / 镜像
# ---------------------------------------------------------------------------
# 依赖目录:镜像里的 composer install 会自己装 vendor(且是 --no-dev);
# 本地 vendor/(131M)与 node_modules/(237M)进上下文只会拖慢构建,还可能把开发包带进去。
#
# vendor 只排 composer 那一份(src/vendor)——**不能用 `**/vendor`**:
# 那会连 src/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-*.{woff2,woff,ttf,eot,svg}
# 一起排掉,而那是 public/css/fontawesome.css 真正 @font-face 引的字体,必须随镜像发货,
# 排掉前端图标就全空了(本机用 moby patternmatcher 的等价实现跑真实文件树验证过)。
src/vendor
**/node_modules
# 开发机的 .env(里面有本机的 DB / APP_KEY)。镜像构建期是 Dockerfile 自己
# `copy('.env.example', '.env')`,运行期由卷 + entrypoint 管,绝不该从开发机带进来。
**/.env
# 开发机的编译产物:Blade 编译视图 / 缓存 / 会话、bootstrap 的编译清单(packages.php、
# services.php、config.php)。这些在开发机上是「当时装过哪些包、缓存了哪些配置」的快照,
# 带进镜像会让 Laravel 按错误的清单引导(Dockerfile 里那段 --no-dev 的注释踩过这个坑)。
#
# 注意写法:故意**只排文件、不排目录** —— 不用 `src/storage/framework/*` 那种整目录通配,
# 因为那样会连 storage/framework/{views,sessions,cache/data} 与 bootstrap/cache 这些**目录本身**
# 一起从上下文里删掉(.dockerignore 的 `*` 连目录里的 .gitignore 占位一起排掉,
# 目录没有任何条目就不会进构建上下文),而 Laravel 运行期必须能往这些目录写
# (Blade 编译视图、session、包清单)—— 目录不存在 = 整站 500。
# 下面 `dir/*` 后面紧跟的 `!.../.gitignore` 就是为了把目录占位文件留下,保证目录存在。
src/storage/framework/cache/data/*
!src/storage/framework/cache/data/.gitignore
src/storage/framework/sessions/*
!src/storage/framework/sessions/.gitignore
src/storage/framework/testing/*
!src/storage/framework/testing/.gitignore
src/storage/framework/views/*.php
src/bootstrap/cache/*.php
# 开发机的 Laravel 日志:里面是本机的绝对路径与错误栈,绝不该随 COPY src/ 烤进镜像。
# 写法与上面 framework/* 同理:`*` 会把 storage/logs/.gitignore 占位也排掉(目录就没了),
# 而 Laravel 运行期必须能往这个目录写日志 —— 所以紧跟一条 `!` 把占位文件留下,保住目录。
src/storage/logs/*
!src/storage/logs/.gitignore