L'image docker php7 officielle a l'exemple suivant:
FROM php:7.0-fpm
RUN apt-get update && apt-get install -y libmemcached-dev \
&& pecl install memcached \
&& docker-php-ext-enable memcached
J'essaie d'utiliser FROM php:7.0-fpm-Alpine
:
RUN apk add --update --no-cache libmemcached-dev
RUN pecl install memcached && docker-php-ext-enable memcached
PECL donne cette erreur:
pecl/memcached requiert PHP (version> = 5.2.0, version <= 6.0.0, versions exclues: 6.0.0), la version installée est 7.0.13
Comment puis-je installer l'extension php memcached sur alpine?
Actuellement, la branche php-memcached-dev: php7 contient la source de cette extension.
Pour l'installer, vous pouvez toujours utiliser le docker-php-ext-*
commandes mais vous devez vous-même extraire la source.
En supposant que tout le nécessaire pour installer l'extension est déjà installé, vous pouvez faire:
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
Ce bloc va cloner le référentiel, configurer et installer l'extension puis nettoyer après lui-même.
Il est très probable que vous deviez installer des packages pour construire l'extension, nous pouvons les ajouter et les supprimer en faisant:
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
Mise à jour 17 mai 2017
memcached
a été ajouté aux bibliothèques pecl officielles pour php7 maintenant (v3 -> php7/7.1, v2 -> php5)
Cela rend l'installation un peu différente
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
Essayez-le.
FROM php:7.2.10-fpm-Alpine3.7
# Install PHP Extensions (igbinary & memcached)
RUN apk add --no-cache --update libmemcached-libs zlib
RUN set -xe && \
cd /tmp/ && \
apk add --no-cache --update --virtual .phpize-deps $PHPIZE_DEPS && \
apk add --no-cache --update --virtual .memcached-deps zlib-dev libmemcached-dev cyrus-sasl-dev && \
# Install igbinary (memcached's deps)
pecl install igbinary && \
# Install memcached
( \
pecl install --nobuild memcached && \
cd "$(pecl config-get temp_dir)/memcached" && \
phpize && \
./configure --enable-memcached-igbinary && \
make -j$(nproc) && \
make install && \
cd /tmp/ \
) && \
# Enable PHP extensions
docker-php-ext-enable igbinary memcached && \
rm -rf /tmp/* && \
apk del .memcached-deps .phpize-deps