用 docker compose 一键启动 hyperf + swoole 的核心是编写 docker-compose.yml 和 dockerfile,基于 hyperf/hyperf 官方镜像构建轻量镜像,配置国内源、自动创建项目骨架、挂载代码实现热更新,并通过 environment 控制端口与环境,执行 docker-compose up -d 即可快速启停完整开发环境。

用 Docker Compose 一键启动 Hyperf + Swoole,核心是写好 docker-compose.yml 和配套的 Dockerfile,让整个服务可构建、可复用、可快速启停。不需要手动进容器装依赖或改配置,一条命令就能拉起完整开发环境。
准备基础镜像:Dockerfile 要轻量且带 Swoole
官方镜像已预装 Swoole(≥5.1.0)和必要 PHP 扩展(如 PDO、Redis、JSON),推荐直接基于 hyperf/hyperf 官方镜像构建:
- 选择匹配 PHP 版本与 Swoole 版本的 tag,例如
8.2-alpine-v3.18-swoole(PHP 8.2 + Alpine 3.18 + Swoole) - 在 Dockerfile 中换国内源(Alpine 和 Composer),加速依赖安装
- 用
composer create-project在构建阶段生成项目骨架,避免运行时重复拉包 - 设置
WORKDIR和默认启动命令php bin/hyperf.php start
定义服务编排:docker-compose.yml 关键字段说明
一个最小可用的 docker-compose.yml 示例:
version: '3.8'
services:
hyperf:
build: .
ports:
- "9501:9501"
volumes:
- .:/home/carver-hyperf
environment:
- SWOOLE_HTTP_PORT=9501
- APP_ENV=dev
restart: unless-stopped
-
build: .表示从当前目录读取 Dockerfile 构建镜像 -
volumes挂载本地代码到容器内工作目录,实现代码热更新(改完保存即可生效,无需重建) -
environment可控制启动行为,比如指定端口、环境模式;Hyperf 会自动读取这些变量 -
restart: unless-stopped确保容器异常退出后自动恢复,适合开发和测试
启动与验证:两条命令搞定
确保当前目录下有 Dockerfile 和 docker-compose.yml 后,执行:
-
docker-compose up -d:后台构建并启动服务 -
docker-compose logs -f hyperf:实时查看启动日志,确认是否成功监听 9501 端口
启动成功后,访问 http://127.0.0.1:9501 应能看到 Hyperf 默认欢迎页。若无法访问,检查宿主机防火墙、Docker 网络、以及云服务器安全组是否放行 9501 端口。
进阶建议:多服务协同更贴近生产
实际项目常需配套数据库、缓存等,可在同一 docker-compose.yml 中追加服务:
- 加
mariadb服务:暴露 3306 端口,挂载初始化 SQL,通过 service 名(如mariadb)在 Hyperf 内连接 - 加
redis服务:暴露 6379 端口,关闭保护模式,Hyperf 配置中填redis://redis:6379 - 加
nginx反向代理:处理 HTTPS、静态资源、负载均衡,将请求转发至hyperf:9501
所有服务共用默认网络,互相可通过服务名通信,无需硬编码 IP。











