refactor(stack): default 模式改为 php think run,原 Docker 部署拆分为 docker-serve 模式

- source/stack/default/ 重命名为 docker-serve,保留 Dockerfile/docker-compose/CI/run.sh
- 新 default 模式仅提供 CI 文件(流水线中自动切换 docker-serve 再构建)
- 更新 stack.json 增加 docker-serve 模式声明
- 更新 README.md 同步模式说明
This commit is contained in:
augushong
2026-05-27 20:49:13 +08:00
parent 7ecbd03730
commit 28337c9694
7 changed files with 176 additions and 8 deletions

View File

@@ -1,26 +1,37 @@
# Stack 模式目录规范
本目录用于维护模式化生效文件,由 `php think admin:stack:mode` 命令读取并覆盖到仓库根目录。
本目录用于维护"模式化生效文件",由 `php think admin:stack:mode` 命令读取并覆盖到仓库根目录。
## 目录结构
- `source/stack/stack.json`:全局清单,定义 `default_mode``managed_files``modes` 元数据。
- `source/stack/default/`:默认行为基线目录。
- `source/stack/{mode}/`:具体模式目录,按仓库相对路径放置文件。
- `source/stack/default/`:默认行为基线目录`php think run`,纯 PHP 内置服务器运行)
- `source/stack/{mode}/`:具体模式目录,按"仓库相对路径"放置文件。
## default 目录规则(强约束)
- `source/stack/default/` 必须与代码库默认行为一致。
- 默认行为文件变更时(如 `Dockerfile``docker-compose.yaml``.gitea/workflows/build-and-deploy.yml`),必须同步更新 `default` 目录对应文件
- 默认行为`php think run`ThinkPHP 内置服务器),不依赖 Docker
- 当默认行为文件变更时(如 `.gitea/workflows/build-and-deploy.yml`),必须同步更新 `default` 目录对应文件。
- 该规则通过目录维护规范与代码评审保障,不作为每次切换命令的运行时阻断条件。
## 模式覆盖规则
- 仅允许覆盖 `stack.json``managed_files` 中声明的文件。
- 切换时按“目标模式优先default 模式兜底”解析最终文件内容
- 切换时按以下优先级解析最终文件:
- 目标模式提供某文件:使用目标模式文件;
- 目标模式未提供某文件:回落使用 `default` 目录对应文件
- 首期固定模式:`default``full``base-build`
- 目标模式未提供某文件:回落使用 `default` 目录对应文件
- 两者均未提供:从根目录删除该文件(带备份,可回滚)
## 可用模式
| 模式 | 说明 |
|------|------|
| `default` | 默认基线,`php think run` 运行,无 Docker 文件 |
| `docker-serve` | Docker 部署模式基于基础镜像nginx+php-fpm |
| `full` | 全量构建模式(兼容历史行为,从 PHP 镜像从头构建) |
| `base-build` | 基础镜像 + 应用构建模式author_only |
| `docker-dev` | Docker 开发模式nginx+php-fpm+MySQL+Redis+phpMyAdmin+Xdebug |
## 基础镜像说明