Hyperf 是一个渐进式的 PHP 协程框架。当使用 Swoole 网络引擎驱动时,仅可运行在 Linux 和 Mac 环境下。
但是大多数的 PHP 开发者,可能更倾向于在 Windows 下进行开发(没错,正是在下)。因此,如果我们想在 Windows 下愉快的使用 Hyperf 框架的话,需要通过 Hyperf 官方提供的 Hyperf 镜像来搭建相应的开发环境。
Hyperf 官方 Docker 镜像地址:https://hub.docker.com/r/hyperf/hyperf
1、拉取镜像
首先我们启动 Docker Desktop ,然后在命令行中输入如下命令拉取官方镜像:
docker pull hyperf/hyperf
执行完该命令,会将官方的镜像最新版本拉取到我们本地。可以通过执行以下命令查看:
docker images
可以看到镜像已经拉取到我们本地:
2、创建宿主机对应的映射目录
根据实际情况,映射到宿主机对应的目录,比如 E:/PhpProjects/hyperf 。
3、创建 Hyperf 容器
我们可以通过以下命令创建一个 Hyperf 容器:
docker run --name hyperf -v E:/PhpProjects/hyperf:/data/project -p 9501:9501 -it --privileged -u root --entrypoint /bin/sh hyperf/hyperf
- –name hyperf 用于指定创建的容器名称
- -v E:/PhpProjects/hyperf:/data/project 用于指定宿主机和容器的目录映射
- -p 9501:9501 用于指定宿主机和容器端口的映射
- –privileged -u root 如果 docker 启动时开启了 selinux-enabled 选项,容器内访问宿主机资源就会受限,所以启动容器时可以增加 –privileged -u root 选项(来自 Hyperf 官方文档的解释)
- hyperf/hyperf 最后的 hyperf/hyperf 参数用于指定我们基于哪个镜像创建这个容器。hyperf/hyperf 是我们在第一步拉取的官方镜像对应的镜像名称。
4、使用 Composer 创建项目
友情提示:如果因为某些原因导致国内下载速度较慢,可以通过以下命令先将 Composer 镜像设置为阿里云镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer
进入 /data/project 目录,执行 Composer 命令创建项目:
cd /data/project
composer create-project hyperf/hyperf-skeleton
如果出现上面的提示,是因为 Composer 的版本太低,可以忽略,或者将 Composer 更新到最新版本,具体更新操作可以参考:Composer 切换版本
在安装时会让我们选择默认的组件,除了时区和数据库外,其他一律选择“n”,具体如下:
What time zone do you want to setup ?
[n] Default time zone for php.ini
Make your selection or type a time zone name, like Asia/Shanghai (n):
n
Do you want to use Database (MySQL Client) ?
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (yes): y
- Adding package hyperf/database (~2.0.0)
- Adding package hyperf/db-connection (~2.0.0)
Do you want to use Redis Client ?
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (yes): n
Which RPC protocol do you want to use ?
[1] JSON RPC with Service Governance
[2] JSON RPC
[3] gRPC
[n] None of the above
Make your selection or type a composer package name and version (n): n
Which config center do you want to use ?
[1] Apollo
[2] Aliyun ACM
[3] ETCD
[n] None of the above
Make your selection or type a composer package name and version (n): n
Do you want to use hyperf/constants component ?
[y] yes
[n] None of the above
Make your selection (n): n
Do you want to use hyperf/async-queue component ? (A simple redis queue component)
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): n
Do you want to use hyperf/amqp component ?
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): n
Do you want to use hyperf/model-cache component ?
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): n
Do you want to use hyperf/elasticsearch component ?
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): n
Do you want to use hyperf/tracer component ? (An open tracing protocol component, adapte with Zipkin etc.)
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): n
其它的组件我们可以在后面需要的时候再自行添加。
5、启动项目
项目安装完成后,可以通过以下命令启动项目:
cd hyperf-skeleton
php bin/hyperf.php start
如果界面只有【INFO】和【DEBUG】这两种日志输入,证明项目启动成功了:
我们可以打开一个新的命令行窗口输入以下命令进入容器:
docker exec -it hyperf /bin/sh
执行以下命令:
curl 127.0.0.1:9501
可以看到服务已经正常启动并且能响应我们的请求了。
此外,我们也可以直接在宿主机浏览器请求 127.0.0.1:9501 ,同样也能看到服务是正常响应的。
接下来,就可以在宿主机 E:/PhpProjects/hyperf 中看到安装好的代码了。
OK,到此为止,我们的 Hyperf Docker 开发环境就搭建好啦,Enjoy !
友情提示:由于 Hyperf 是持久化的 CLI 框架,因此我们修改完代码后,需要通过 CTRL + C 终止当前启动的进程实例,并重新执行 php bin/hyperf.php start 启动命令才可生效。
文章相关仓库:https://gitee.com/xiaohuakang/hyperf-study-record
本文部分内容参考自官方文档,来源地址:安装 Hyperf