- 容器 docker 运行环境
git clone --recursive https://github.com/swoole/swoole-cli.git
cd swoole-cli
bash setup-php-runtime.sh
composer install --no-interaction --no-autoloader --no-scripts --profile
composer dump-autoload --optimize --profile
# 生成构建脚本 make.sh
php prepare.php --without-docker --skip-download=1
bash ./make.sh docker-build
bash ./make.sh docker-bash
# 准备bash 命令
sh sapi/quickstart/linux/alpine-init-minimal.sh
bash sapi/quickstart/linux/alpine-init.sh
# 进入容器后需要再一次执行此命令
php prepare.php +inotify +apcu +ds +xlswriter +ssh2 +uuid
bash ./make.sh all-library
bash ./make.sh config
bash ./make.sh build
bash ./make.sh archive
./bin/swoole-cli -m
./bin/swoole-cli --ri swoole
file ./bin/swoole-cli
Linux
下需要在容器中构建,因此需要先构建 swoole-cli-builder:base
基础镜像。
基础镜像 Dockerfile
参考 sapi/Dockerfile
- 构建基础镜像:
./make.sh docker-build [china|ustc|tuna]
,也可以直接使用官方构建好的镜像docker pull phpswoole/swoole-cli-builder:base
- 构建完成之后,使用
./make.sh docker-bash
进入容器 - 构建所有
C/C++
库:./make.sh all-library
- 提交镜像:
./make.sh docker-commit
提交swoole-cli-builder
镜像 - 推送镜像:
./make.sh docker-push
当
C库
变更时,应该修改swoole-cli-builder
镜像的版本make.sh all-library
是可重入的,它会自动跳过已构建成功的库
跳过生成容器基础镜像 使用如下命令快速进入容器环境 便捷调整构建环境
# 安装容器运行环境
# bash sapi/quickstart/linux/install-docker.sh
bash sapi/quickstart/linux/run-alpine-container.sh
bash sapi/quickstart/linux/alpine-init.sh
# 使用镜像源 例子
# bash sapi/quickstart/linux/install-docker.sh --mirror [ china | ustc | tuna ]
# bash sapi/quickstart/linux/alpine-init.sh --mirror [ china | ustc | tuna | tencentyun | huaweicloud ]
# bash sapi/quickstart/linux/alpine-init.sh --mirror china
需要依赖 phpswoole/swoole-cli-builder
镜像,可按照第一步的提示构建镜像,也可以直接拉取官方构建好的镜像。
phpswoole/swoole-cli-builder:base
:不包含C/C++
库的基础镜像,需要自行构建./make.sh all-library
phpswoole/swoole-cli-builder:1.6
:包含C/C++
库的现成镜像,可直接构建swoole-cli
- 配置:
./make.sh config
,可能会出现缺失C/C++
库,请检查相关的库是否正确编译安装 - 编译:
./make.sh build
- 测试:
./make.sh test
,请注意此程序并没有运行php-src
和 扩展的phpt
测试文件,仅验证二进制文件的特性完整性 - 打包:
./make.sh archive
./make.sh list-library
:列出所有C/C++
库./make.sh list-extension
:列出所有扩展./make.sh clean-all-library
:清理所有C/C++
库./make.sh clean-all-library-cached
:清理所有C/C++
库,保留缓存文件./make.sh sync
:同步php-src
版本./make.sh pkg-check
:检查所有C/C++
库./make.sh list-swoole-branch
:列出swoole
分支./make.sh switch-swoole-branch
:切换swoole
分支./make.sh [library-name]
:单独编译某个C/C++
库./make.sh clean-[library-name]
:单独清理某个C/C++
库./make.sh clean-[library-name]-cached
:单独清理某个C/C++
库,保留缓存文件
解决办法:删除此文件,然后重新启动构建
rm ext/opcache/minilua
./make.sh build
快速安装 docker 运行环境
bash sapi/quickstart/linux/install-docker.sh
# 使用中国镜像
bash sapi/quickstart/linux/install-docker.sh --mirror china
bash sapi/quickstart/linux/alpine-init.sh --mirror china