
Hyperf Docker 镜像是 Hyperf 框架官方提供的容器化解决方案,旨在简化 Hyperf 应用的部署与运行流程。Hyperf 是基于 Swoole 的高性能 PHP 协程框架,该镜像预集成了 Hyperf 运行所需的环境依赖、PHP 扩展及运行时(Swoole/Swow),支持多版本 PHP、多基础镜像及轻量级部署,适用于快速搭建 Hyperf 开发环境与生产环境。
base(基础环境)、dev(开发环境)、swoole(Swoole 运行时)、swow(Swow 运行时)v4.5.5)基础镜像已集成以下常用 PHP 扩展,满足 Hyperf 核心功能需求:
[PHP Modules] bcmath、Core、ctype、curl、date、dom、fileinfo、filter、gd、hash、iconv、json、libxml、mbstring、mysqlnd、openssl、pcntl、pcre、PDO、pdo_mysql、pdo_sqlite、Phar、posix、readline、redis、Reflection、session、SimpleXML、sockets、sodium、SPL、standard、sysvmsg、sysvsem、sysvshm、tokenizer、xml、xmlreader、xmlwriter、Zend OPcache、zip、zlib [Zend Modules] Zend OPcache
基于 Alpine 基础镜像构建,体积小、资源占用低,结合 Swoole/Swow 协程运行时,可充分发挥 Hyperf 的高性能特性。
镜像标签由以下部分组成,各部分含义如下:
{PHP版本}-{基础镜像}-v{Alpine版本}-{运行时}-{Swoole/Swow版本}
PHP版本:如 7.3、7.4、8.0(必填)基础镜像:alpine 或 ubuntu(必填)Alpine版本:如 v3.11、v3.12(基础镜像为 Alpine 时必填)运行时:base、dev、swoole、swow(必填)Swoole/Swow版本:如 v4.5.5(可选,默认使用最新稳定版)| 标签格式 | 说明 | Dockerfile 链接 |
|---|---|---|
7.3-alpine-v3.11-swoole-* | PHP 7.3 + Swoole | https://github.com/hyperf-cloud/hyperf-docker/blob/master/7.3/alpine/swoole/Dockerfile |
7.3-alpine-v3.11-swow-* | PHP 7.3 + Swow | https://github.com/hyperf-cloud/hyperf-docker/blob/master/7.3/alpine/swow/Dockerfile |
7.3-alpine-v3.11-base | PHP 7.3 基础环境 | https://github.com/hyperf-cloud/hyperf-docker/blob/master/7.3/alpine/base/Dockerfile |
7.4-alpine-v3.12-swoole-* | PHP 7.4 + Swoole | https://github.com/hyperf-cloud/hyperf-docker/blob/master/7.4/alpine/swoole/Dockerfile |
7.4-alpine-v3.12-swow-* | PHP 7.4 + Swow | https://github.com/hyperf-cloud/hyperf-docker/blob/master/7.4/alpine/swoole/Dockerfile |
7.4-alpine-v3.12-base | PHP 7.4 基础环境 | https://github.com/hyperf-cloud/hyperf-docker/blob/master/7.4/alpine/base/Dockerfile |
8.0-alpine-v3.12-swoole-* | PHP 8.0 + Swoole | https://github.com/hyperf-cloud/hyperf-docker/blob/master/8.0/alpine/swoole/Dockerfile |
8.0-alpine-v3.12-swow-* | PHP 8.0 + Swow | https://github.com/hyperf-cloud/hyperf-docker/blob/master/8.0/alpine/swoole/Dockerfile |
8.0-alpine-v3.12-base | PHP 8.0 基础环境 | https://github.com/hyperf-cloud/hyperf-docker/blob/master/8.0/alpine/base/Dockerfile |
步骤 1:创建项目 Dockerfile
在 Hyperf 项目根目录创建 Dockerfile,示例如下(以 7.4-alpine-v3.12-swoole 为例):
dockerfileFROM hyperf/hyperf:7.4-alpine-v3.12-swoole # 设置工作目录 WORKDIR /opt/www # 复制项目代码 COPY . . # 安装依赖 RUN composer install --no-dev -o # 启动命令(根据 Hyperf 应用类型调整) CMD ["php", "bin/hyperf.php", "start"]
步骤 2:构建镜像
bashdocker build -t hyperf-app .
步骤 3:运行容器
bashdocker run -d -p 9501:9501 --name hyperf-container hyperf-app
-p 9501:9501:映射 Hyperf 默认端口--name hyperf-container:指定容器名称创建 docker-compose.yml,适合多服务部署(如配合 MySQL、Redis):
yamlversion: '3.8' services: hyperf: build: . image: hyperf-app container_name: hyperf-app ports: - "9501:9501" volumes: - ./:/opt/www # 开发环境挂载代码目录,实时更新 depends_on: - mysql - redis environment: - APP_ENV=prod - DB_HOST=mysql - REDIS_HOST=redis mysql: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=hyperf ports: - "3306:3306" redis: image: redis:alpine ports: - "6379:6379"
启动服务:
bashdocker-compose up -d
通过 Dockerfile 安装额外 PHP 扩展,满足特定业务需求。
5.3.1 Kafka 扩展
dockerfileRUN apk add --no-cache librdkafka-dev \ && pecl install rdkafka \ && echo "extension=rdkafka.so" > /etc/php7/conf.d/rdkafka.ini
5.3.2 MongoDB 扩展
dockerfileRUN apk add --no-cache openssl-dev \ && pecl install mongodb \ && echo "extension=mongodb.so" > /etc/php7/conf.d/mongodb.ini
5.3.3 Protobuf 扩展
dockerfileRUN apk add --no-cache protobuf \ && pecl install protobuf \ && echo "extension=protobuf.so" > /etc/php7/conf.d/protobuf.ini
5.3.4 Swoole Tracker(性能监控)
dockerfile# 下载并安装 Swoole Tracker ADD ./swoole-tracker-install.sh /tmp RUN chmod +x /tmp/swoole-tracker-install.sh \ && cd /tmp \ && ./swoole-tracker-install.sh \ && rm /tmp/swoole-tracker-install.sh \ # 配置扩展 && cp /tmp/swoole-tracker/swoole_tracker72.so /usr/lib/php7/modules/swoole_tracker72.so \ && echo "extension=swoole_tracker72.so" > /etc/php7/conf.d/swoole-tracker.ini \ && echo "apm.enable=1" >> /etc/php7/conf.d/swoole-tracker.ini \ && echo "apm.sampling_rate=100" >> /etc/php7/conf.d/swoole-tracker.ini \ && echo "apm.enable_memcheck=1" >> /etc/php7/conf.d/swoole-tracker.ini \ # 启动 Agent && printf '#!/bin/sh\n/opt/swoole/script/php/swoole_php /opt/swoole/node-agent/src/node.php' > /opt/swoole/entrypoint.sh \ && chmod 755 /opt/swoole/entrypoint.sh
5.3.5 修复阿里云 OSS 字符集问题
dockerfile# 安装 gnu-libiconv 解决字符集问题 RUN apk --no-cache --allow-untrusted --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/ add gnu-libiconv=1.15-r2 ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so
以下是 hyperf/hyperf 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务