鉴于编译各版本的PHP扩展, 需要安装与切换不同PHP版本后进行编译, 很麻烦, 于是有了用
docker
编译的想法. 搜索相关资源发现已经有很多大牛们写出来了, 就不重复造轮子了(其实就是自己菜写不出)
方法1
不BB, 直接放代码, p神写的 zephir
快速编译生成5.4~7.2版本下所有扩展的 Dockfile
文件, 本人就多加了一行 WORKDIR /zephir
以 php5.6
为例, Dockfile
文件
FROM php:5.6
LABEL maintainer="phithon <[email protected]>"
ARG ZEPHIR_VERSION=0.11.1
ARG ZEPHIR_PARSER_VERSION=1.1.2
ENV PATH=${PATH}:/root/.composer/vendor/bin
RUN set -ex \
&& apt-get update \
&& apt-get install -y --no-install-recommends git unzip ca-certificates wget \
&& curl -sL https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
&& rm -rf /var/lib/apt/lists/*
RUN set -ex \
&& composer global require phalcon/zephir:${ZEPHIR_VERSION} \
&& composer clearcache -n
RUN set -ex \
&& mkdir -p /usr/share/zephir \
&& curl -sL https://github.com/phalcon/php-zephir-parser/archive/v${ZEPHIR_PARSER_VERSION}.tar.gz \
| tar xz --strip-components=1 -C /usr/share/zephir \
&& cd /usr/share/zephir \
&& ./install \
&& { \
echo '[Zephir Parser]'; \
echo 'extension=zephir_parser.so'; \
} >> /usr/local/etc/php/conf.d/zephir_parser.ini \
&& { \
echo '#!/usr/bin/env bash'; \
echo 'exec "$@"'; \
} >> /usr/bin/sudo \
&& chmod +x /usr/bin/sudo \
&& rm -rf /usr/share/zephir
WORKDIR /zephir
CMD ["zephir"]
前提 linux
已安装好 docker
执行命令 docker build -t zephirphp:5.6 .
构建镜像 zephirphp:5.6
可挂载目录创建容器 docker run -it --rm --name zephir $(pwd):/zephir zephir-php:5.6 /bin/sh
在容器里面进行 zephir init 扩展名
和 zephir build
等命令操作
不同PHP版本修改 Dockfile
文件第一行 FROM php:5.6
为你想编译的版本, 例如 FROM php:7.2
, 支持PHP版本: 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, latest
如有现成的 zephir
项目, 也可以直接在项目里执行 docker run -it --rm --name zephir $(pwd):/zephir zephir-php:5.6 zephir build
方法2
当然嫌弃上面方法需要构建镜像很麻烦的话, 有现成的镜像, 直接 docker run -it --rm --name zephir -v $(pwd):/zephir tuwen/zephir:5.6 /bin/sh
, 在容器里进行操作
支持PHP版本: 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, latest
方法3
要是大哥您还是嫌弃的话, 用小弟copy回来的脚本吧
github: https://github.com/Gekkoou/docker-zephir
文件里 hello.zep
为简单例子, 可修改代码尝试编译一下
编译生成5.4~7.2版本下所有扩展:
bash builds.sh
只生成某个PHP版本的扩展:
docker run -it --rm --name zephir -v $(pwd):/zephir tuwen/zephir:5.6 bash /zephir/build-ext.sh
命令执行完毕后会在根目录创建文件夹 lib
, 里面有已经生成好的不同版本的php扩展
p神博客: https://www.leavesongs.com/
docker hub: https://hub.docker.com/r/tuwen/zephir/