Files
ulthon_admin/source/stack
augushong 5797885f3d fix(stack): 修复 bind mount 遮蔽 build 期 symlink 导致容器启动失败
B-route 下 build context=仓库根 + bind mount /var/www/html 有两个问题:

1. ENTRYPOINT 引用 /var/www/html/source/docker/run.sh 在运行期找不到:
   build 期的 symlink 被 bind mount 完全覆盖,容器看到的是宿主机
   仓库根的 source/docker/(只有 nginx.conf/zz-phprun.ini/zz-phpfpm.conf,
   没有 run.sh)

2. 模式目录 source/docker/ 不自包含:
   只有 run.sh/zzz-dev.ini/zzz-xdebug.ini,缺基础配置

修复(docker-dev 模式):
- run.sh 改为用 SCRIPT_DIR 自动检测脚本所在目录
- Dockerfile ENTRYPOINT/chmod 改为完整路径
  /var/www/html/source/stack/docker-dev/source/docker/run.sh
- 基础配置(nginx.conf/zz-phprun.ini/zz-phpfpm.conf)复制到模式目录
  使其自包含

验证:docker compose build 通过,up 容器稳定运行,
nginx + PHP-FPM 启动成功,ThinkPHP CLI 正常(v8.1.4)
2026-07-22 23:29:50 +08:00
..

Stack 模式目录规范B-route 工作流)

本目录维护多种部署/运行模式的独立栈定义。B-route 工作流下,每个模式是 source/stack/ 下一个独立子目录,不再覆盖仓库根目录:使用某个模式时 cd 进对应目录运行 docker compose up -d 即可。

工作流

  1. 默认基线default仓库根目录直接 php think run,根目录无 Docker 文件。
  2. 选择某个 Docker 模式:cd source/stack/<mode>docker compose up -dbind mount 指向仓库根目录。
  3. 模式目录内执行命令:在该目录用 docker compose exec <service> php think ...,或在仓库根目录用 docker compose -f source/stack/<mode>/docker-compose.yaml exec <service> php think ...

目录结构

  • source/stack/stack.json:全局清单,记录 default_modemodes 元数据,供人与工具查阅可用模式。
  • source/stack/default/:默认行为基线目录(php think run,纯 PHP 内置服务器,不依赖 Docker
  • source/stack/<mode>/:具体模式目录,内含该模式独立的 docker-compose.yaml 及配套文件(如 Dockerfile、nginx 配置、env 示例等)。

default 目录规则(强约束)

  • source/stack/default/ 必须与代码库默认行为一致。
  • 默认行为为 php think runThinkPHP 内置服务器),不依赖 Docker。
  • 当默认行为文件变更时(如 .gitea/workflows/build-and-deploy.yml),必须同步更新 default 目录对应文件。
  • 该规则通过目录维护规范与代码评审保障,不作为运行时阻断条件。

可用模式

模式 启动方式 说明
default 仓库根目录 php think run 默认基线,无 Docker 文件,宿主机直接跑
docker-serve cd source/stack/docker-serve && docker compose up -d Docker 部署模式基于基础镜像nginx + php-fpm
docker-dev cd source/stack/docker-dev && docker compose up -d Docker 开发模式nginx + php-fpm + MySQL + Redis + phpMyAdmin + Xdebug
docker-dev-sync cd source/stack/docker-dev-sync && docker compose up -d Docker 开发模式 - Windows I/O 优化rsync 同步,避免 bind mount 慢速问题)
full cd source/stack/full && docker compose up -d 完整服务栈(规划中),从 PHP 镜像从头构建
author cd source/stack/author 框架作者维护工具(基础镜像构建、发布脚本等)

历史 base-build 模式已并入 author

基础镜像说明

  • author/docker/Dockerfile.base 为基础镜像构建文件,属于作者维护范围。
  • 推荐标签策略:latest + 时间戳(如 20260424120000)。