在 pecl 中的扩展 gearman 已经很久没有更新,最新是 2013 年发布的 gearman-1.1.2.tgz,该版本只支持 PHP7 以下的版本。如果想 在 PHP7.0+ 的环境中安装 Gearman 扩展,需要通过源码编译的方式安装。
说明:Gearman 依赖 Gearmand 服务,Gearmand 又依赖 libuuid 包。
完整的 Dockerfile 示例如下:
FROM php:7.0-apache
# 修改软件更新源
COPY ./source.list /etc/apt/sources.list
RUN apt-get update \
# 安装扩展依赖包
&& apt-get install -y wget \
# 下载源码包:gearman
&& mkdir -p /tmp/gearmand /tmp/gearman /tmp/libuuid \
&& wget -c https://github.com/gearman/gearmand/releases/download/1.1.18/gearmand-1.1.18.tar.gz \
&& tar -xf gearmand-1.1.18.tar.gz -C /tmp/gearmand --strip-components=1 \
&& wget -c https://github.com/wcgallego/pecl-gearman/archive/gearman-2.0.3.tar.gz \
&& tar -xf gearman-2.0.3.tar.gz -C /tmp/gearman --strip-components=1 \
&& wget -c http://nchc.dl.sourceforge.net/project/libuuid/libuuid-1.0.3.tar.gz \
&& tar -xf libuuid-1.0.3.tar.gz -C /tmp/libuuid --strip-components=1 \
# 安装 Gearmand,主要是安装 PHP 所需的依赖 libgearman
&& cd /tmp/libuuid \
&& ./configure \
&& make \
&& make install \
&& ( \
cd /tmp/gearmand \
&& ./configure \
&& make \
&& make install \
) \
&& /sbin/ldconfig \
# 安装扩展:gearman
&& docker-php-ext-configure /tmp/gearman --with-php-config=/usr/local/bin/php-config \
&& docker-php-ext-install /tmp/gearman \
# 清理安装过程产生的垃圾文件
&& apt-get clean \
&& apt-get autoclean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
source.list 文件如下
#debian8
deb http://mirrors.aliyun.com/debian/ jessie main non-free contrib
deb http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ jessie main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib
来源:oschina
链接:https://my.oschina.net/u/2276973/blog/1631209