Hyperf docker-compose怎么启动项目

小磊吖_8620

小磊吖_8620

2026-09-07

507人浏览

原创

hyperf用docker-compose启动核心是镜像构建正确且容器按序运行;需用含swoole的官方镜像、cmd数组格式执行php bin/hyperf.php start、ports映射对齐、禁用冲突volumes,并配置restart: unless-stopped保障服务常驻。

hyperf docker-compose怎么启动项目

Hyperf 项目用 docker-compose 启动,核心就两步:镜像得构建好、容器得按正确顺序跑起来。如果启动失败,90% 是 Dockerfile 没写对或 docker-compose.yml 的挂载/端口/启动命令有冲突。

docker-compose up -d 之前必须确保 build 成功

很多人直接 docker-compose up -d 报错,比如 ERROR: failed to solve: failed to read dockerfilecommand not found: php,本质是构建阶段就断了。

  • Dockerfile 第一行必须用带 Swoole 的官方镜像,例如 FROM hyperf/hyperf:8.2-alpine-v3.18-swoole;用纯 php:8.2-cli 镜像会缺 swoole 扩展,hyperf.php start 直接退出
  • 执行 composer create-project 必须在 RUN 指令里完成,不能靠 volumes 挂载宿主机空目录进去——否则容器一启动就发现 bin/hyperf.php 不存在,CMD 失败
  • 构建时加 --no-interaction --prefer-dist 参数,避免交互卡住;国内环境务必配阿里云 Composer 镜像,否则拉包超时导致构建中断

docker-compose.yml 的 ports 和 CMD 要对齐

Hyperf 默认监听 0.0.0.0:9501,但容器内端口暴露和宿主机映射不一致,就会出现「容器运行中但 curl 不通」。

Hyperf 3.2.4
Hyperf 3.2.4

Hyperf 3.2.4 官方源码下载,适合 PHP 协程框架、微服务组件和高并发应用升级,覆盖 3.2 分支新增函数与稳定性优化。

下载
  • EXPOSE 9501Dockerfile 里只是声明,真正生效靠 docker-compose.ymlports 字段,必须写成 - "9501:9501",不能只写一个端口
  • CMD ["php", "bin/hyperf.php", "start"] 是最终入口,不要被 entrypoint 覆盖;如果 docker-compose.yml 里写了 entrypoint,又没显式调用 hyperf.php start,服务就不会真正启动
  • 生产环境建议加 restart: unless-stopped,避免容器异常退出后服务静默挂掉

挂载 volumes 时机不对会导致项目启动失败

本地开发想热更新代码,但直接挂载空目录到 /home/carver-hyperf,容器启动时会清空整个工作目录——vendorbin 全没了,php bin/hyperf.php start 必然报错。

  • 首次构建镜像时先注释掉 volumes,让 composer create-project 在镜像内完整生成项目结构
  • 等第一次 docker-compose up -d 成功后,再用 docker cp 把容器内项目拷出来:docker cp carver-hyperf:/home/carver-hyperf ./data
  • 确认 ./data 里有 bin/config/vendor/ 后,再取消 volumes 注释并指向该目录

最常被忽略的是:Hyperf 容器启动后,php bin/hyperf.php start 进程必须持续运行,不能是 shell 脚本执行完就退出。所以 CMD 必须是数组格式,不能写成 CMD php bin/hyperf.php start(shell 格式会被当作单条命令,Swoole 进程无法接管信号)。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

docker hyperf docker-compose

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

625

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

4199

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5057

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

1873

7

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

199

16

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

2026.03.31

351

14

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

2026.05.11

340

26

Go Docker与容器化部署教程合集
Go Docker与容器化部署教程合集

聚焦 Go 应用的容器化部署优势与实践,讲解 Go 静态编译特性(CGO_ENABLED=0)与 scratch / distroless 极小基础镜像构建、多阶段 Dockerfile 编写规范、交叉编译生成目标平台二进制、镜像安全扫描(Trivy)与漏洞修复、Docker Compose 本地编排开发环境、Kubernetes Deployment / Service / ConfigMap 部署 Go 服务、健康检查(Livene

2026.05.15

245

24

Hyperf 项目部署运维与性能调优手册
Hyperf 项目部署运维与性能调优手册

聚焦 Hyperf 在生产环境的落地,包含 Docker 高效打包、Swoole 配置优化、常见的内存溢出(OOM)问题排查方法以及热更新方案。

2026.05.19

365

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习