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 社区贡献!我们欢迎各种形式的贡献:
贡献前请查阅贡献指南。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。






探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务