Files
ulthon_admin/source/stack
augushong 544604ebff fix(stack): 其余4个模式同步 bind mount 兼容修复
与 docker-dev(commit 5797885)保持一致的修复方案:
- run.sh 改为 SCRIPT_DIR 自动检测脚本所在目录
- Dockerfile ENTRYPOINT/chmod 改为完整路径
  /var/www/html/source/stack/<mode>/source/docker/run.sh
- 基础配置(nginx.conf/zz-phprun.ini/zz-phpfpm.conf)复制到各模式目录
- ln -s 改为 ln -sf(防止容器重启时 File exists)

docker-dev-sync 额外保留 sync.sh 调用逻辑(init + watch),
仅路径改为 \/sync.sh
2026-07-22 23:40:33 +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)。