
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
docker-php-base 项目是一个用于创建和维护 PHP Docker 镜像的系统。它使用 Ansible 生成多个 PHP 版本(7.4、8.0、8.1、8.2、8.3、8.4)和类型(CLI、FPM、Supervisord)的 Dockerfile,基于 Alpine Linux 构建。该项目通过 GitHub Actions 实现自动化构建流程,创建支持 AMD64 和 ARM64 的多架构镜像,并使用 https://github.com/goss-org/goss 进行测试。镜像预装多种 PHP 扩展,设计为 PHP 应用在开发和生产环境中的基础镜像。
镜像内置多种 PHP 扩展,如下表所示:
| 扩展 | 描述 | 类型 |
|---|---|---|
| intl | 国际化函数 | native |
| pcntl | 进程控制 | native |
| sockets | 套接字通信函数 | native |
| pdo_pgsql | PostgreSQL 数据库支持 | native |
| pdo_mysql | MySQL 数据库支持 | native |
| opcache | 通过共享内存存储预编译脚本字节码提升性能 | native |
| zip | ZIP 归档读写函数 | native |
| bcmath | 任意精度数学运算 | native |
| exif | 可交换图像信息 | native |
| gd | 图像处理库 | native |
| redis | Redis 数据库交互 | pecl |
| memcached | Memcached 缓存交互 | pecl |
| decimal | 任意精度浮点小数 | pecl |
| amqp | 高级消息队列协议(AMQP)库 | pecl |
| yaml | YAML 解析库 | pecl |
| grpc | gRPC 库 | pecl |
| protobuf | 协议缓冲区库 | pecl |
PHP 基础镜像可从 Docker Hub 和 GitHub Container Registry 获取。
Docker Hub
bashdocker pull wayofdev/php-base:8.3-fpm-alpine-latest
GitHub Container Registry
bashdocker pull ghcr.io/wayofdev/docker-php-base:8.3-fpm-alpine-latest
将 8.3-fpm-alpine-latest 替换为所需的 PHP 版本、类型和标签。
镜像支持以下组合:
示例
bash# PHP 8.1 CLI docker pull wayofdev/php-base:8.1-cli-alpine-latest # PHP 8.2 FPM docker pull wayofdev/php-base:8.2-fpm-alpine-latest # PHP 8.3 Supervisord docker pull wayofdev/php-base:8.3-supervisord-alpine-latest
完整标签列表可参考 https://hub.docker.com/r/wayofdev/php-base/tags 或 https://github.com/wayofdev/docker-php-base/pkgs/container/docker-php-base%E3%80%82
将此镜像作为基础构建自定义镜像:
dockerfile# 从 Docker Hub FROM wayofdev/php-base:8.3-fpm-alpine-latest # 或从 GitHub Container Registry # FROM ghcr.io/wayofdev/docker-php-base:8.3-fpm-alpine-latest # 此处添加自定义 Dockerfile 指令 # ...
项目使用一系列工具进行开发和测试,Makefile 提供了简化开发流程的命令。
克隆仓库:
bashgit clone git@github.com:wayofdev/docker-php-base.git && \ cd docker-php-base
使用 Ansible 从 Jinja 模板生成可分发的 Dockerfile:
bashmake generate
构建默认镜像:
bashmake build
默认构建 Makefile 中 IMAGE_TEMPLATE 变量指定的镜像(默认值为 8.3-fpm-alpine)。
构建特定镜像:
bashmake build IMAGE_TEMPLATE="8.3-fpm-alpine"
将 8.3-fpm-alpine 替换为所需的 PHP 版本、类型和操作系统。
构建所有镜像:
bashmake build IMAGE_TEMPLATE="8.1-cli-alpine" make build IMAGE_TEMPLATE="8.1-fpm-alpine" make build IMAGE_TEMPLATE="8.1-supervisord-alpine" make build IMAGE_TEMPLATE="8.2-cli-alpine" make build IMAGE_TEMPLATE="8.2-fpm-alpine" make build IMAGE_TEMPLATE="8.2-supervisord-alpine" make build IMAGE_TEMPLATE="8.3-cli-alpine" make build IMAGE_TEMPLATE="8.3-fpm-alpine" make build IMAGE_TEMPLATE="8.3-supervisord-alpine" make build IMAGE_TEMPLATE="8.4-cli-alpine" make build IMAGE_TEMPLATE="8.4-fpm-alpine" make build IMAGE_TEMPLATE="8.4-supervisord-alpine"
项目使用 Ansible 生成 Dockerfile 和配置。可通过修改 src/group_vars/base.yml 文件调整 PHP 扩展和设置。
在 group_vars/base.yml 中可调整以下 PHP 和 OPcache 设置:
yamlsettings_opcache_ini: php_opcache_enable: 1 php_opcache_enable_cli: 1 settings_php_ini: php_timezone: "UTC" php_post_max_size: "16M" php_memory_limit: "256M"
通过修改 group_vars/base.yml 中的扩展列表启用或禁用 PHP 扩展:
yamlext_native_enabled: - intl - pcntl - sockets - pdo_mysql - pdo_pgsql - OPcache - zip - bcmath - exif - gd ext_pecl_enabled: - redis - memcached - decimal - amqp - yaml - grpc - protobuf
添加扩展到列表或从列表中移除即可。修改后需重新生成 Dockerfile:
bashmake generate
项目使用 https://github.com/aelsabbahy/goss/tree/master/extras/dgoss 测试 Docker 镜像。
测试默认镜像:
bashmake test
测试 IMAGE_TEMPLATE 变量指定的镜像(默认 8.3-fpm-alpine)。
测试特定镜像:
bashmake test IMAGE_TEMPLATE="8.3-fpm-alpine"
将 8.3-fpm-alpine 替换为目标镜像。
测试所有镜像:
bashmake test IMAGE_TEMPLATE="8.1-cli-alpine" make test IMAGE_TEMPLATE="8.1-fpm-alpine" make test IMAGE_TEMPLATE="8.1-supervisord-alpine" make test IMAGE_TEMPLATE="8.2-cli-alpine" make test IMAGE_TEMPLATE="8.2-fpm-alpine" make test IMAGE_TEMPLATE="8.2-supervisord-alpine" make test IMAGE_TEMPLATE="8.3-cli-alpine" make test IMAGE_TEMPLATE="8.3-fpm-alpine" make test IMAGE_TEMPLATE="8.3-supervisord-alpine" make test IMAGE_TEMPLATE="8.4-cli-alpine" make test IMAGE_TEMPLATE="8.4-fpm-alpine" make test IMAGE_TEMPLATE="8.4-supervisord-alpine"
测试配置通过为每个镜像变体生成的 goss.yaml 文件定义,包括:
运行 make test 时执行以下步骤:
goss.yaml 中定义的测试。项目有专门的https://github.com/wayofdev/docker-php-base/blob/master/.github/SECURITY.md%E3%80%82
感谢考虑为 wayofdev 社区贡献!我们欢迎各种形式的贡献:
贡献前请查阅贡献指南。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务