hyperf/box 尝尝鲜
hyperf/box 尝尝鲜
管理PHP环境和相关依赖项,提供将Hyperf应用程序打包为二进制程序的能力,并提供用于管理和部署Hyperf应用程序的反向代理服务。
相关资料
- https://github.com/hyperf/box 在lwmbs的基础上,封装box命令工具
- https://github.com/dixyes/lwmbs 在micro的基础上,定制了swow脚手架的扩展
- https://github.com/easysoft/phpmicro micro自执行SAPI提供了php“自执行文件”的可能性
box get pkg@version
这个命令就是获取dixyes/lwmbs
构建出来的包,目前支持php8.0、8.1
、micro
、composer
如:box get php@8.1
box build-prepare
在build之前做一个预检查,检测项目是否全部下载:
- composer
- php
- micro
都是去github上面进行下载,php与micro下载github
build
打包swow-skeleton脚手架
- 脚手架需要有 hyperf/phar
- 先执行了 php bin/hyperf.php phar:build 生成一个phar文件
- 再使用micro进行打包
示例:在进行build-self时,执行的命令如下
1 | cd ./src && /Users/lihq1403/.box/php8.1 -d phar.readonly=Off bin/hyperf.php phar:build --name=box-build.phar.tmp && |
新的部署方式
有了这种模式,是不是就可以将二进制文件放到一个很小的镜像去运行
先构建一个box基础镜像吧
Dockerfile
1 | FROM alpine:3.15 |
1 | docker build -t lihq1403/hyperf-box:8.1-alpine-v3.15-swow-0.0.3 . |
构建完了之后,发现镜像大小为88.2MB
1 | ~/.box # ls -lh |
1 | /usr/local/bin # ls -lh |
我构建了一个放到dockerhub
https://hub.docker.com/r/lihq1403/hyperf-box/tags
docker pull lihq1403/hyperf-box:8.1-alpine-v3.15-swow-0.0.3
接下来就是构建一个swow-skeleton脚手架的项目了
初始化一个项目后,修改Dockerfile
1 | # 构建阶段 |
这里采用了docker多阶段构建,生成二进制后,copy到一个基础镜像就可以运行了,缩小最后的镜像体积
1 | docker build -t box-test . |
构建完,镜像大小为 43.15 MB
1 | /opt # ls -lh |
运行起来没问题
1 | $ docker run box-test |
知识扩展
- 目前hyperf/box还在尝鲜阶段,hyperf3.0也还没正式发布
- 有了这个可自执行文件,是不是以后也可以用php写命令行工具了
- 配合以后完善的hyperf/nano,可以仅使用协程功能打造命令行工具
构建一个命令行工具应该用下面这些就可以了吧
- https://github.com/crazywhalecc/php-cli-helper 打包项目为phar
- https://github.com/crazywhalecc/static-php-cli 提供基础大众的micro
- https://github.com/symfony/console 强大的命令行
- https://github.com/inhere/php-console 功能全面的PHP命令行应用库
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Lihq - Blog!
评论