如何在Docker的PHP7 Alpine映像上安装php memcached扩展?

官方的php7泊坞窗图像有以下例子:

FROM php:7.0-fpm RUN apt-get update && apt-get install -y libmemcached-dev \ && pecl install memcached \ && docker-php-ext-enable memcached 

我试图使用FROM php:7.0-fpm-alpine

 RUN apk add --update --no-cache libmemcached-dev RUN pecl install memcached && docker-php-ext-enable memcached 

PECL给出了这个错误:

pecl / memcached需要PHP(版本> = 5.2.0,版本<= 6.0.0,排除版本:6.0.0),安装版本是7.0.13

我如何在高山上安装memcached php扩展?

目前php-memcached-dev:php7分支包含这个扩展的源代码。

要安装它,你仍然可以使用docker-php-ext-*命令,但你需要自己检查源代码。

基础安装

假设安装扩展所需的一切已经安装,你可以这样做:

 RUN git clone -b php7 https://github.com/php-memcached-dev/php-memcached /usr/src/php/ext/memcached \ && docker-php-ext-configure /usr/src/php/ext/memcached \ --disable-memcached-sasl \ && docker-php-ext-install /usr/src/php/ext/memcached \ && rm -rf /usr/src/php/ext/memcached 

该块将克隆存储库,configuration和安装扩展,然后自行清理。

先决条件

这很可能是您需要安装到包来构build扩展,我们可以通过执行添加和删除它们:

 ENV MEMCACHED_DEPS zlib-dev libmemcached-dev cyrus-sasl-dev git RUN set -xe \ && apk add --no-cache libmemcached-libs zlib \ && apk add --no-cache \ --virtual .memcached-deps \ $MEMCACHED_DEPS \ && git clone -b php7 https://github.com/php-memcached-dev/php-memcached /usr/src/php/ext/memcached \ && docker-php-ext-configure /usr/src/php/ext/memcached \ --disable-memcached-sasl \ && docker-php-ext-install /usr/src/php/ext/memcached \ && rm -rf /usr/src/php/ext/memcached \ && apk del .memcached-deps 

2017年5月17日更新

memcached已经被添加到php7的正式pecl库中(v3 – > php7 / 7.1,v2 – > php5)

这使安装有点不同

 FROM php:7.0-alpine ENV MEMCACHED_DEPS zlib-dev libmemcached-dev cyrus-sasl-dev RUN apk add --no-cache --update libmemcached-libs zlib RUN set -xe \ && apk add --no-cache --update --virtual .phpize-deps $PHPIZE_DEPS \ && apk add --no-cache --update --virtual .memcached-deps $MEMCACHED_DEPS \ && pecl install memcached \ && echo "extension=memcached.so" > /usr/local/etc/php/conf.d/20_memcached.ini \ && rm -rf /usr/share/php7 \ && rm -rf /tmp/* \ && apk del .memcached-deps .phpize-deps