Commit Graph

18 Commits

Author SHA1 Message Date
augushong
e0e2580646 feat(stack): 所有 Docker 模式集成 XHProf 性能分析
在 docker-dev/docker-dev-sync/docker-serve/full 四个模式中集成 XHProf
性能分析能力,默认不启用(--profile xhprof 按需开启),零侵入不改
业务代码和 run.sh。

核心组件:
- source/docker/xhprof-bootstrap.php: 采集器初始化(auto_prepend_file)
- source/docker/xhgui-config.php: XHGui 认证配置(Basic Auth)+ PDO 存储
- 各 Dockerfile: 安装 PECL xhprof 扩展 + php-profiler 到 /opt/xhprof/
- 各 docker-compose: 新增 xhgui 服务(profiles: xhprof),端口 8142

存储方案:PDO MySQL(复用现有 MySQL),避免 MongoDB PHP 驱动兼容性问题。
docker-dev/docker-dev-sync 开箱即用;docker-serve/full 需配置 XHGUI_PDO_DSN。

认证:HTTP Basic Auth,默认 admin/xhgui123,环境变量可覆盖。
采集控制:XHPROF_ENABLE 环境变量 + cookie _profiler 强制触发 + 1% 采样。
Dockerfile.base 同步新增 xhprof 扩展(框架作者需重建推送基础镜像)。
2026-08-09 09:07:10 +08:00
augushong
7341268ceb fix(docker): run.sh 加 umask 000 + 预创建 runtime 子目录
bind mount 模式下 Dockerfile 的权限处理被宿主目录覆盖,
PHP 新建的子目录(runtime/cache/da/ 等)默认 755 导致 www-data 无法写入。
- 开头加 umask 000 让子进程创建的文件/目录全局可写
- mkdir 预创建 cache/log/temp/session/nginx 子目录
- docker-dev 和 docker-dev-sync 同步修复
2026-08-08 10:33:44 +08:00
augushong
ce191adfd8 feat(nginx-log): 4 个 stack 模板增加 log_format 与 access_log 配置(Docker 开箱即用) 2026-07-28 00:24:26 +08:00
augushong
4ebcea0669 chore(stack): 删除 docker-dev/docker-dev-sync 残留的 .docker-dev.env
B-route 下 .env 只在仓库根,bind mount 容器直接读根目录 .env,
模式目录不再需要独立的 env 文件
2026-07-23 22:17:18 +08:00
augushong
5797885f3d fix(stack): 修复 bind mount 遮蔽 build 期 symlink 导致容器启动失败
B-route 下 build context=仓库根 + bind mount /var/www/html 有两个问题:

1. ENTRYPOINT 引用 /var/www/html/source/docker/run.sh 在运行期找不到:
   build 期的 symlink 被 bind mount 完全覆盖,容器看到的是宿主机
   仓库根的 source/docker/(只有 nginx.conf/zz-phprun.ini/zz-phpfpm.conf,
   没有 run.sh)

2. 模式目录 source/docker/ 不自包含:
   只有 run.sh/zzz-dev.ini/zzz-xdebug.ini,缺基础配置

修复(docker-dev 模式):
- run.sh 改为用 SCRIPT_DIR 自动检测脚本所在目录
- Dockerfile ENTRYPOINT/chmod 改为完整路径
  /var/www/html/source/stack/docker-dev/source/docker/run.sh
- 基础配置(nginx.conf/zz-phprun.ini/zz-phpfpm.conf)复制到模式目录
  使其自包含

验证:docker compose build 通过,up 容器稳定运行,
nginx + PHP-FPM 启动成功,ThinkPHP CLI 正常(v8.1.4)
2026-07-22 23:29:50 +08:00
augushong
6bc661117c fix(stack): 修复 B-route 下所有 Dockerfile COPY 路径与 build context 不匹配
B-route 把 build context 改为仓库根后,Dockerfile 中的 COPY source/docker/...
和 chmod/ENTRYPOINT 引用 /var/www/html/source/docker/ 全部失效。

根因:
- 仓库根有全局 source/docker/(仅 nginx.conf/zz-phprun.ini/zz-phpfpm.conf 基础配置)
- 模式专属配置(run.sh、zzz-dev.ini、zzz-xdebug.ini 等)在 source/stack/<mode>/source/docker/
- COPY . 把全局 source/docker/ 复制进容器,但缺少模式专属文件
- 旧 COPY source/docker/zzz-dev.ini 在 context=仓库根时找不到文件

修复(所有 5 个模式统一):
- 每个 Dockerfile 在 COPY . 后加 rm -rf + ln -sf symlink,
  让 /var/www/html/source/docker 指向模式专属配置目录
- COPY ini 文件路径改为完整的 source/stack/<mode>/source/docker/...
- .dockerignore 去掉 source/stack/ 排除(配置文件仅几 KB,
  但 COPY 需要这些文件在 build context 中)
- .dockerignore 加 docker-dev/docker-dev-data 排除(旧数据残留)
2026-07-22 23:18:16 +08:00
augushong
0a04181d12 revert(stack): un-merge docker-dev-sync, restore as independent B-route directory
docker-dev 清理合并残留:去掉 rsync/mkdir/chmod、删 ulthon_admin_sync 服务、
删 .env(COMPOSE_PROFILES)、删 sync.sh、删 .dockerignore、去 SYNC_INTERVAL。
docker-dev-sync 恢复独立目录并 B-route 化(context: ../../..)。
两个模式各自独立、各自完整。
2026-07-22 22:42:58 +08:00
augushong
28576def0a feat(stack): 合并 docker-dev-sync 到 docker-dev 配置,统一 Dockerfile 2026-07-22 01:27:52 +08:00
augushong
bed965a9b1 fix(stack): 修正构建上下文路径层级 ../../.. 并将 base-build 重命名为 author 2026-07-22 01:16:24 +08:00
augushong
62e72af93d feat(stack): B 路线构建上下文与卷配置方案(docker-serve/docker-dev/full) 2026-07-22 01:10:15 +08:00
augushong
560e0f6a5e docs(update-workflow): 以 B 路线检测替代 admin:stack:mode 2026-07-22 01:05:23 +08:00
augushong
c4fbd60bbc fix(timer): 修正定时器参数拼写 quit -> quiet(静默模式) 2026-06-02 20:09:37 +08:00
augushong
218810a7db refactor: 迁移根目录 docker/ 到 source/docker/,更新所有路径引用
- 将 docker/{nginx.conf,run.sh,zz-phprun.ini,zz-phpfpm.conf} 移动到 source/docker/
- 更新所有 Dockerfile 中 /var/www/html/docker/ -> /var/www/html/source/docker/
- 更新 stack.json managed_files 路径前缀
- 重组 stack 模式目录结构 docker/ -> source/docker/
- 更新 source/README.md 目录描述
- 更新 AdminUpdateServiceBase.php 可选文件前缀
2026-05-12 23:13:47 +08:00
augushong
1c99e74c2e docs( docker-compose ): 注释掉docker-compose的name配置项
补充说明默认使用项目目录名作为项目名,仅在同名冲突时才需要手动配置name
2026-05-11 20:46:36 +08:00
augushong
a024a215fb chore(docker-dev): 修改日志通道为debug_mysql
更新docker开发环境的日志输出渠道配置,将日志从文件输出改为debug_mysql渠道
2026-05-11 20:44:44 +08:00
augushong
748307e826 chore(docker): 将默认服务端口从80更改为8000
更新所有Dockerfile、nginx配置、docker-compose文件和README中的端口引用,统一使用8000端口以避免与系统常用端口的冲突
2026-05-06 19:37:36 +08:00
augushong
efc335e78f feat(stack): 新增 docker-dev 开发模式并自动清理文件
All checks were successful
build-and-deploy / 直传代码并部署到 Host15 (push) Successful in 1m13s
- 新增 docker-dev 部署模式,提供包含 nginx+php-fpm、MySQL、Redis、phpMyAdmin 和 Xdebug 的完整 Docker 开发环境
- 在 StackModeService 中重写 applyMode 方法,切换模式时自动删除目标模式中不存在的已管理文件
- 新增 .docker-dev.env 配置文件并纳入 managed_files 管理,切换模式时自动复制或删除
2026-04-30 22:38:22 +08:00
augushong
58a9002c3a feat(stack): 新增 docker-dev 开发模式
- 新增 source/stack/docker-dev/Dockerfile: 基于 full 模式 + Xdebug + 开发 PHP 配置
- 新增 source/stack/docker-dev/docker-compose.yaml: 4 服务编排 (app/mysql/redis/phpmyadmin)
- 新增 source/stack/docker-dev/.docker-dev.env: 开发环境配置模板 (HOSTNAME=mysql, HOSTPORT=3306)
- 更新 source/stack/stack.json: 注册 docker-dev 模式, managed_files 增加 .docker-dev.env
- 更新 .gitignore: 排除 /docker-dev/ 数据目录
2026-04-29 23:35:27 +08:00