本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
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 的多架构镜像,并使用 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 pull wayofdev/php-base:8.3-fpm-alpine-latest
docker pull ghcr.io/wayofdev/docker-php-base:8.3-fpm-alpine-latest
将 8.3-fpm-alpine-latest 替换为所需的 PHP 版本、类型和标签。
镜像支持以下组合:
# 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
完整标签列表可参考 Docker Hub Tags 或 GitHub Container Registry Packages。
将此镜像作为基础构建自定义镜像:
# 从 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 提供了简化开发流程的命令。
克隆仓库:
git clone ***:wayofdev/docker-php-base.git && \ cd docker-php-base
使用 Ansible 从 Jinja 模板生成可分发的 Dockerfile:
make generate
构建默认镜像:
make build
默认构建 Makefile 中 IMAGE_TEMPLATE 变量指定的镜像(默认值为 8.3-fpm-alpine)。
构建特定镜像:
make build IMAGE_TEMPLATE="8.3-fpm-alpine"
将 8.3-fpm-alpine 替换为所需的 PHP 版本、类型和操作系统。
构建所有镜像:
make 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 设置:
settings_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 扩展:
ext_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:
make generate
项目使用 dgoss 测试 Docker 镜像。
测试默认镜像:
make test
测试 IMAGE_TEMPLATE 变量指定的镜像(默认 8.3-fpm-alpine)。
测试特定镜像:
make test IMAGE_TEMPLATE="8.3-fpm-alpine"
将 8.3-fpm-alpine 替换为目标镜像。
测试所有镜像:
make 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 中定义的测试。项目有专门的安全策略。
感谢考虑为 wayofdev 社区贡献!我们欢迎各种形式的贡献:
贡献前请查阅贡献指南。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429