docs(stack): 重写框架规则、stack README 与项目模板提示

This commit is contained in:
augushong
2026-07-22 00:56:43 +08:00
parent 387d89c596
commit 9f5ffc34c4
3 changed files with 41 additions and 31 deletions

View File

@@ -10,6 +10,8 @@
## 开发方式
<!-- B-route 提示你的项目实际用哪个模式default=根目录 php think rundocker 模式=cd source/stack/<mode> && docker compose up -d。把你的实际选择记录在下面。-->
(描述本项目的开发模式。例如:
- 本地 WAMP / XAMPP + 直接修改代码
@@ -22,6 +24,8 @@
## 运行方式
<!-- B-route 提示你的项目实际用哪个模式default=根目录 php think rundocker 模式=cd source/stack/<mode> && docker compose up -d。把你的实际选择记录在下面。-->
(描述本项目实际如何运行。例如:
- `php think run` 内置服务器(开发期)
@@ -35,6 +39,8 @@
## 部署方式
<!-- B-route 提示你的项目实际用哪个模式default=根目录 php think rundocker 模式=cd source/stack/<mode> && docker compose up -d。把你的实际选择记录在下面。-->
(描述本项目如何部署到生产环境。例如:
- 源码 `git pull` + `composer install`

View File

@@ -10,14 +10,19 @@
- `default/` 必须与代码库默认行为一致
- 默认行为相关文件变更时需同步更新 `source/stack/default/` 对应文件
## 运行模式判断
## 运行模式判断B-route 工作流)
执行 `php think` 命令前,必须先判断当前运行模式。
执行 `php think` 命令前,必须先判断当前运行模式。B-route 工作流下,模式由"当前所在目录"决定,不再覆盖仓库根目录。
**判断方式**:检查仓库根目录是否存在 `docker-compose.yaml`
**判断方式**:检查仓库根目录是否含 Docker 文件(`Dockerfile` / `docker-compose.yaml`)。
- **存在**Docker 模式。宿主机可能没有 PHP不能依赖 `php think` 来检测。所有 `php think` 命令前缀改为 `docker compose exec ulthon_admin`
- 示例:`docker compose exec ulthon_admin php think tools:http:call`
- **不存在**:宿主机模式。直接执行 `php think`
也可读取 `source/stack/stack.json` 了解所有可用模式及其说明
- **根目录无 Docker 文件default 模式)**:宿主机直接执行 `php think`
- 默认基线行为是 `php think run`ThinkPHP 内置服务器)。
- 启动开发服务器:在仓库根目录执行 `php think run`
- **需要 Docker 模式**:进入对应模式目录启动栈。
- 启动:`cd source/stack/<mode>``docker compose up -d`
- 模式目录内的 `docker-compose.yaml` 是该模式的栈定义bind mount 通常指向仓库根目录。
- 在容器外执行 `php think``docker compose -f source/stack/<mode>/docker-compose.yaml exec <service> php think ...`,或在模式目录内 `docker compose exec <service> php think ...`
- 示例:`docker compose -f source/stack/docker-dev/docker-compose.yaml exec ulthon_admin php think tools:http:call`
- **可用模式**见 `source/stack/stack.json``source/stack/README.md`default / docker-serve / docker-dev / full / author 等)。
- **判断技巧**:如果不确定当前是否处于容器内,看 `pwd` 是否在仓库根、根目录有无 `Dockerfile``docker ps` 是否有相关容器在跑。容器内执行 `php think` 不需要前缀。

View File

@@ -1,40 +1,39 @@
# Stack 模式目录规范
# Stack 模式目录规范B-route 工作流)
本目录用于维护"模式化生效文件",由 `php think admin:stack:mode` 命令读取并覆盖仓库根目录。
本目录维护多种部署/运行模式的独立栈定义。B-route 工作流下,每个模式是 `source/stack/` 下一个独立子目录,**不再覆盖仓库根目录**:使用某个模式时 `cd` 进对应目录运行 `docker compose up -d` 即可
## 工作流
1. 默认基线default仓库根目录直接 `php think run`,根目录无 Docker 文件。
2. 选择某个 Docker 模式:`cd source/stack/<mode>``docker compose up -d`bind 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_mode``managed_files``modes` 元数据。
- `source/stack/default/`:默认行为基线目录(`php think run`,纯 PHP 内置服务器运行)。
- `source/stack/{mode}/`:具体模式目录,按"仓库相对路径"放置文件
- `source/stack/stack.json`:全局清单,记录 `default_mode``modes` 元数据,供人与工具查阅可用模式
- `source/stack/default/`:默认行为基线目录(`php think run`,纯 PHP 内置服务器,不依赖 Docker)。
- `source/stack/<mode>/`:具体模式目录,内含该模式独立的 `docker-compose.yaml` 及配套文件(如 Dockerfile、nginx 配置、env 示例等)
## default 目录规则(强约束)
- `source/stack/default/` 必须与代码库默认行为一致。
- 默认行为为 `php think run`ThinkPHP 内置服务器),不依赖 Docker。
- 当默认行为文件变更时(如 `.gitea/workflows/build-and-deploy.yml`),必须同步更新 `default` 目录对应文件。
- 该规则通过目录维护规范与代码评审保障,不作为每次切换命令的运行时阻断条件。
## 模式覆盖规则
- 仅允许覆盖 `stack.json``managed_files` 中声明的文件。
- 切换时按以下优先级解析最终文件:
- 目标模式提供某文件:使用目标模式文件;
- 目标模式未提供某文件:回落使用 `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 |
| `docker-dev-sync` | Docker 开发模式 - Windows I/O 优化rsync 定时同步,避免 bind mount 慢速问题) |
| 模式 | 启动方式 | 说明 |
|------|----------|------|
| `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含 Windows I/O 优化 profile |
| `full` | `cd source/stack/full && docker compose up -d` | 完整服务栈(规划中),从 PHP 镜像从头构建 |
| `author` | `cd source/stack/author` | 框架作者维护工具(基础镜像构建、发布脚本等 |
> 历史 `base-build` 模式已并入 `author``docker-dev-sync`Windows I/O 优化)已融入 `docker-dev` 的 compose profile不再单列目录。
## 基础镜像说明
- `base-build/docker/Dockerfile.base` 为基础镜像构建文件,默认标记为作者维护范围`author_only=true`
- `author/docker/Dockerfile.base` 为基础镜像构建文件,属于作者维护范围。
- 推荐标签策略:`latest` + 时间戳(如 `20260424120000`)。