Files
ulthon_admin/source/stack/README.md

41 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 -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``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` 目录对应文件。
- 该规则通过目录维护规范与代码评审保障,不作为运行时阻断条件。
## 可用模式
| 模式 | 启动方式 | 说明 |
|------|----------|------|
| `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`)。