Files
ulthon_admin/source/stack
augushong ddaa0ca5a9 feat(stack): 新增 docker-dev-sync 模式,优化 Windows 下 Docker 开发 I/O 性能
- 新增 source/stack/docker-dev-sync/ 模式目录
- 宿主代码映射到 /var/www/source(bind mount 中转)
- 容器内 rsync 定时同步到 /var/www/html(原生文件系统)
- vendor 由 Docker build 管理,不参与同步
- rsync 使用 --no-perms 避免保留 Windows 源文件权限
- 排除 docker-dev/、runtime/、.git/ 等无关目录
- SYNC_INTERVAL 环境变量可配置轮询间隔(默认 3 秒)
- 更新 stack.json 注册模式并声明 sync.sh 为托管文件
- 调整 CI 构建流程:先安装依赖再切换 stack 模式
2026-06-01 22:32:29 +08:00
..

Stack 模式目录规范

本目录用于维护"模式化生效文件",由 php think admin:stack:mode 命令读取并覆盖到仓库根目录。

目录结构

  • source/stack/stack.json:全局清单,定义 default_modemanaged_filesmodes 元数据。
  • source/stack/default/:默认行为基线目录(php think run,纯 PHP 内置服务器运行)。
  • source/stack/{mode}/:具体模式目录,按"仓库相对路径"放置文件。

default 目录规则(强约束)

  • source/stack/default/ 必须与代码库默认行为一致。
  • 默认行为为 php think runThinkPHP 内置服务器),不依赖 Docker。
  • 当默认行为文件变更时(如 .gitea/workflows/build-and-deploy.yml),必须同步更新 default 目录对应文件。
  • 该规则通过目录维护规范与代码评审保障,不作为每次切换命令的运行时阻断条件。

模式覆盖规则

  • 仅允许覆盖 stack.jsonmanaged_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 慢速问题)

基础镜像说明

  • base-build/docker/Dockerfile.base 为基础镜像构建文件,默认标记为作者维护范围(author_only=true)。
  • 推荐标签策略:latest + 时间戳(如 20260424120000)。