
后端Web框架微服务RPC框架异步编程【免费下载链接】hyperf A coroutine framework that focuses on hyperspeed and flexibility. Building microservice or middleware with ease.项目地址https://gitcode.com/hyperf/hyperf点击查看免费下载本篇指南以 Hyperf 官方教程中「DaoCloud DevOps 构建」方案为主体讲解个人开发者如何借助 DaoCloud 这一免费 DevOps 平台完成 Hyperf 项目的镜像自动构建、集群托管与应用部署。读完本文你将掌握「项目 / 集群 / 应用」三个核心页面的完整操作链路、Dockerfile 的关键调整细节以及通过宿主机端口验证 Hyperf 服务是否正常运行的实战方法。原文参见 docs/en/tutorial/daocloud.md。为什么选择 DaoCloud个人开发者的 DevOps 现实诉求对于个人开发者而言自建Gitlab与Docker Swarm 集群的维护成本明显不可接受你需要额外维护代码托管服务器、CI 构建机、镜像仓库以及集群调度节点。DaoCloud 提供了一种更轻量的DevOps服务将代码仓库接入、镜像构建、集群管理与应用部署整合在同一个控制台内。官方教程推荐它的理由很简单——免费且好用。整条链路的核心价值在于你只需要提交代码DaoCloud 会自动完成「拉取代码 → 构建镜像 → 部署到集群 → 暴露端口」的全流程与自建 GitLab CI Docker Swarm 的体验基本对齐却无需承担基础设施成本。前置准备Hyperf 的运行环境与 Docker 基础在接入 DaoCloud 之前有必要先了解 Hyperf 的运行环境约束因为它们直接决定了镜像选择与 Dockerfile 的形态系统环境Hyperf 只能在 Linux 和 MacOS 上运行Windows 用户可通过 Docker for Windows 间接使用见 安装指南。PHP 版本要求 PHP 8.2。网络引擎二选一即可——Swoole PHP 扩展 5.0需在php.ini中将swoole.use_shortname设置为Off或 Swow PHP 扩展 1.4。按需扩展JSON必装、Pcntl仅 Swoole 引擎、OpenSSL使用 HTTPS 时、PDO使用 MySQL 客户端时、Redis使用 Redis 客户端时、Protobuf使用 gRPC 服务端或客户端时。项目创建使用composer create-project hyperf/hyperf-skeleton生成骨架项目官方同时提供了基于 Alpine 的预构建镜像如hyperf/hyperf:8.1-alpine-v3.18-swoole这也解释了 DaoCloud 教程中为何会出现apk包管理器命令——Alpine 系镜像默认使用apk安装软件包。启动方式进入项目根目录执行php bin/hyperf.php start默认监听9501端口可用CTRL C终止进程后重新启动以加载新代码。上述要点详见 Hyperf 安装与环境要求 与 快速开始。三个核心页面项目、应用、集群管理DaoCloud 控制台功能较多但官方教程明确建议只需关注project项目、application应用和cluster management集群管理三个页面。项目Project负责管理代码仓库接入与镜像构建规则是整个流水线的源头集群管理Cluster Management负责登记你的宿主机节点形成可调度的主机资源池应用Application负责把构建好的镜像真正运行起来并完成端口、卷Volume等运行时配置。后续所有操作都在这三个页面之间往返完成理解这条主脉络就不会在控制台里迷失。第一步创建项目打通镜像仓库与自动构建进入projects页面创建新项目。DaoCloud 支持多种镜像仓库接入方式可根据自己代码托管平台的实际情况选择。官方教程以hyperf-demo演示项目为例进行配置在projects中创建项目选择对应的仓库类型完成授权接入项目创建成功后Github 仓库对应的WebHooks位置会出现一个回调 URL——这个 URL 是「代码提交触发自动构建」的桥梁当代码被提交push时DaoCloud 会通过该 WebHook 收到通知并自动执行对应的打包镜像构建操作无需手动触发。关键细节Dockerfile 需要补充wget项目接入后还需要对仓库中的Dockerfile做一处必要修改在原有的apk add命令下方追加 apk add wget \。以典型的 Alpine 基础镜像 Dockerfile 为例修改后的形态如下RUN apk add --no-cache \ bash \ ... \ apk add wget \ ...官方文档的原话是具体原因并不十分清楚但如果不更新wget在使用时会出现问题而使用自建 Gitlab CI 时则没有这个问题。可以这样理解Hyperf 官方镜像及 DaoCloud 构建环境多以 Alpine 为基础其自带的wgetBusyBox 版本功能较弱部分构建或运行阶段如下载依赖、健康检查需要依赖功能更完整的 GNUwget因此显式通过apk add安装一份可用的wget是必要的保险措施。如果你的构建环境不依赖wget或使用自建 Gitlab CI则无需此改动。完成以上配置后后续每次提交代码DaoCloud 都会自动执行打包操作无需人工干预。第二步创建集群并添加主机接下来进入cluster management集群管理创建一个新的cluster集群在集群下add hosts添加主机即登记你要部署应用的目标服务器节点。该步骤按控制台指引逐步操作即可通常在主机上安装对应的 Agent 或完成 SSH 信任即可完成注册核心目的是让 DaoCloud 具备把容器调度到你指定宿主机上的能力。注册完成后主机即出现在集群的主机列表中后续应用部署时即可选择该集群作为运行目标。第三步创建应用映射端口并挂载.env集群就绪后进入应用部署环节点击Apply - Create Application创建应用选择刚刚创建好的project项目也就是选定要部署的镜像来源点击Deploy部署。部署配置中有两个关键点需要特别注意主机端口选择一个未被占用的端口按照官方教程说明主机端口host port需要用户自行选择一个未被占用的端口。Hyperf 服务默认在容器内监听9501端口因此通常的做法是把宿主机某个空闲端口例如9501映射到容器的9501端口映射关系可写为宿主机端口:容器端口。挂载.env用 Volume 实现配置注入DaoCloud 没有提供Swarm那样的Config配置管理功能因此需要主动将项目的.env文件映射进容器以实现配置注入容器目录/opt/www/.env主机目录你存放.env文件的位置本地服务器上的文件路径可写与否该挂载选项可写 / 只读均可按需选择即可挂载完成后点击Deploy Now立即部署。之所以必须挂载.env是因为 Hyperf 项目的配置体系依赖环境变量文件项目根目录下config/中的配置文件如config/autoload/下的各组件配置与config/config.php在服务启动时会被扫描并注入配置对象而.env中存放的数据库、Redis 等连接信息正是这些配置的取值来源Hyperf 配置结构的详细说明见 配置章节。如果没有 Swarm Config 这类原生配置注入手段把.env以 Volume 形式挂载进容器的固定路径/opt/www/.env是最直接可靠的替代方案。第四步验证部署访问 Hyperf 欢迎接口部署完成后进入宿主机host访问刚才映射的端口即可验证服务是否正常运行$ curl http://127.0.0.1:9501如果部署成功你将看到 Hyperf 的欢迎接口返回如下 JSON 数据{code:0,data:{user:Hyperf,method:GET,message:Hello Hyperf.}}该响应正是 Hyperf 骨架项目默认首页控制器的输出——code表示业务状态码data中携带了用户名、请求方法与欢迎语Hello Hyperf.。这与 Hyperf 官方文档中控制器返回字符串的示例如 控制器章节 中curl http://127.0.0.1:9501/?targetHyperf返回Hello Hyperf.一脉相承可用于确认容器内代码已正常加载、路由已生效、端口映射正确。若 curl 无响应可依次排查集群主机是否在线、端口是否被占用、容器是否处于运行状态、/opt/www/.env挂载是否成功。原理回顾与排障思路WebHooks 驱动 CI/CD项目创建成功后生成的 WebHooks URL 是自动化的触发器代码 push 后 DaoCloud 自动完成打包若提交代码后未触发构建优先检查 WebHook 是否配置正确、仓库授权是否有效。为什么改 DockerfileAlpine 基础镜像中wget能力受限构建或使用阶段可能异常需在apk add下追加 apk add wget \自建 Gitlab CI 环境无此问题。为什么挂载.envDaoCloud 无 Swarm Config 功能无法原生注入配置只能通过 Volume 将宿主机上的.env挂载到容器/opt/www/.env保证 Hyperf 启动时能读取环境配置。为什么手动指定端口容器端口由镜像内的 Hyperf 配置决定默认 9501宿主机端口由部署时指定须确保未被占用。延伸阅读DaoCloud 部署教程原文Hyperf 安装与环境要求镜像、扩展与本地环境基线Hyperf 快速开始路由、控制器与启动命令控制器与响应示例欢迎接口Hello Hyperf.的代码来源Hyperf 配置说明config/autoload与config/config.php的配置加载机制赞分享后端Web框架微服务RPC框架异步编程【免费下载链接】hyperf A coroutine framework that focuses on hyperspeed and flexibility. Building microservice or middleware with ease.项目地址https://gitcode.com/hyperf/hyperf点击查看免费下载相关推荐CI/CD流水线构建devops-exercises持续集成部署CI/CD流水线构建devops exercises持续集成部署 概述 在现代软件开发中持续集成Continuous Integration, CI和持文档教程DevOps运维终极DevOps实战指南从零构建高效CI/CD与容器化项目部署流程终极DevOps实战指南从零构建高效CI/CD与容器化项目部署流程 项目简介 GitHub加速计划project based learning是一个开源文档教程Oni2与CI/CD集成编辑器内触发构建与部署Oni2与CI/CD集成编辑器内触发构建与部署 痛点与解决方案 你是否还在频繁切换编辑器与终端来执行构建命令是否曾因忘记运行测试而导致CI失败本文将展示如开发工具代码编辑器桌面应用上一篇攻克 Smelte UI 框架 8 大痛点从安装到深色模式的完美解决方案下一篇Apprise API 项目常见问题解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考