linux zephir 编写 php 扩展 (docker篇)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Gekkoou/article/details/84073723

鉴于编译各版本的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/





猜你喜欢

转载自blog.csdn.net/Gekkoou/article/details/84073723