- 容器 docker 运行环境
- debian 系列 要求linux 内核大于 5.0
git clone -b main https://github.com/swoole/swoole-cli.git
cd swoole-cli
git submodule update --init -f
bash sapi/quickstart/linux/install-docker.sh
bash sapi/quickstart/linux/run-alpine-container.sh
bash sapi/quickstart/linux/connection-swoole-cli-alpine.sh
sh sapi/quickstart/linux/alpine-init-minimal.sh
bash sapi/quickstart/linux/alpine-init.sh
bash setup-php-runtime.sh
__DIR__=$(pwd);
export PATH=${__DIR__}/bin/runtime/:$PATH
alias php="'${__DIR__}/bin/runtime/php -c ${__DIR__}/bin/runtime/php.ini'"
composer install --no-interaction --no-autoloader --no-scripts --profile --no-dev
composer dump-autoload --optimize --profile --no-dev
php prepare.php +apcu +ds +xlswriter +ssh2 +uuid
bash make-install-deps.sh
# 静态编译依赖库
bash make.sh all-library
# 静态编译 PHP 预处理
bash make.sh config
# 静态编译PHP (编译、汇编、链接)
bash make.sh build
# 静态编译PHP (打包)
bash make.sh archive
./bin/swoole-cli -m
./bin/swoole-cli --ri swoole
file ./bin/swoole-cli
# 准备 docker 运行时 使用镜像 (镜像源 mirrors.tuna.tsinghua.edu.cn)
bash sapi/quickstart/linux/install-docker.sh --mirror china
sh sapi/quickstart/linux/alpine-init-minimal.sh --mirror china
bash sapi/quickstart/linux/alpine-init.sh --mirror china
# 准备PHP 运行时 使用镜像 (镜像源 https://www.swoole.com/download)
bash setup-php-runtime.sh --mirror china
# 准备PHP 运行时 使用代理
bash setup-php-runtime.sh --proxy http://192.168.3.26:8015
php prepare.php +apcu +ds +xlswriter +ssh2 +uuid --with-http-proxy=socks5h://127.0.0.1:2000
# 生成构建脚本 make.sh
php prepare.php --without-docker --skip-download=1
bash ./make.sh docker-build
bash ./make.sh docker-bash
# 进入容器后需要再一次执行此命令
php prepare.php +inotify +apcu +ds +xlswriter +ssh2 +uuid
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
是可重入的,它会自动跳过已构建成功的库
需要依赖 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