mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-08-30 12:45:32 +08:00
在 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 扩展(框架作者需重建推送基础镜像)。
Dockerfile.base 使用说明
1. 文件作用
source/stack/author/docker/Dockerfile.base 是 ulthon_admin 的基础镜像构建文件,用于提前固化这些“低频变更但构建耗时高”的基础层:
- Debian 源与系统包(如
nginx) - PHP 扩展安装能力(
install-php-extensions) - 常用 PHP 扩展(
pdo_mysql、gd、redis、imagick等) - Composer 二进制与全局仓库配置
这个文件不包含业务代码(不会 COPY . 项目代码),只负责构建底座环境。
2. 与其他 Dockerfile 的关系
当前模式设计下有三类 Dockerfile:
source/stack/full/Dockerfile:全量构建(历史兼容方案)source/stack/author/docker/Dockerfile.base:基础镜像构建(本文件)source/stack/author/Dockerfile:应用镜像构建(FROM <base-image>,再拷贝业务代码)
推荐流程是:
- 先构建并推送基础镜像(用本文件)
- 应用构建基于基础镜像进行(减少重复安装依赖)
3. 你该如何做(标准步骤)
以下以 DockerHub 仓库 ulthon/ulthon_admin-base 为例。
3.1 登录 DockerHub
docker login
3.2 构建基础镜像(latest + 时间戳)
在项目根目录执行:
docker build -f source/stack/author/docker/Dockerfile.base -t ulthon/ulthon_admin-base:latest .
docker build -f source/stack/author/docker/Dockerfile.base -t ulthon/ulthon_admin-base:20260424233000 .
3.3 推送基础镜像
docker push ulthon/ulthon_admin-base:latest
docker push ulthon/ulthon_admin-base:20260424233000
3.4 应用构建引用基础镜像
当前项目 Dockerfile(默认)已支持:
ARG BASE_IMAGE=ulthon/ulthon_admin-base:latest
FROM ${BASE_IMAGE}
如果要固定版本,构建应用时可指定:
docker build --build-arg BASE_IMAGE=ulthon/ulthon_admin-base:20260424233000 -t ulthon/ulthon_admin-app:test .
4. 何时需要重建基础镜像
出现以下情况时,建议重建并推送 Dockerfile.base:
- 新增/删除 PHP 扩展
- 修改系统依赖(apt 包)
- 调整 Composer 全局配置
- 需要安全更新(基础镜像、系统包漏洞修复)
如果只是业务代码变化,一般不需要重建基础镜像。
5. 注意事项
Dockerfile.base建议由框架作者维护(避免业务方随意改底座导致环境漂移)。- 标签建议同时维护:
latest:默认引用- 时间戳:可追溯、可回滚
- 若默认模式为
author,请保持:- 根目录
Dockerfile source/stack/default/Dockerfile二者内容一致(符合source/stack目录规范)。
- 根目录