鑑於編譯各版本的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/