# Stack 模式目录规范(B-route 工作流) 本目录维护多种部署/运行模式的独立栈定义。B-route 工作流下,每个模式是 `source/stack/` 下一个独立子目录,**不再覆盖仓库根目录**:使用某个模式时 `cd` 进对应目录运行 `docker compose up -d` 即可。 ## 工作流 1. 默认基线(default):仓库根目录直接 `php think run`,根目录无 Docker 文件。 2. 选择某个 Docker 模式:`cd source/stack/` 后 `docker compose up -d`,bind mount 指向仓库根目录。 3. 模式目录内执行命令:在该目录用 `docker compose exec php think ...`,或在仓库根目录用 `docker compose -f source/stack//docker-compose.yaml exec php think ...`。 ## 目录结构 - `source/stack/stack.json`:全局清单,记录 `default_mode` 与 `modes` 元数据,供人与工具查阅可用模式。 - `source/stack/default/`:默认行为基线目录(`php think run`,纯 PHP 内置服务器,不依赖 Docker)。 - `source/stack//`:具体模式目录,内含该模式独立的 `docker-compose.yaml` 及配套文件(如 Dockerfile、nginx 配置、env 示例等)。 ## default 目录规则(强约束) - `source/stack/default/` 必须与代码库默认行为一致。 - 默认行为为 `php think run`(ThinkPHP 内置服务器),不依赖 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`)。