Je souhaite construire mon image PHP-FPM avec l'extension php-redis
basée sur la image officielle PHP image Docker } _, par exemple, à l'aide de ce fichier Docker: php: 5.6-fpm .
Les docs disent que je peux installer des extensions de cette façon, en installant les dépendances manuellement:
FROM php:5.6-fpm
# Install modules (iconv, mcrypt and Gd extensions)
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng12-dev \
&& docker-php-ext-install iconv mcrypt \
&& docker-php-ext-configure Gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install Gd
CMD ["php-fpm"]
Sans Docker, je l'ai installé avec apt-get install php5-redis
. Mais comment puis-je l'installer en utilisant l'approche ci-dessus?
J'ai trouvé deux façons d'installer php-redis extension pour l'image officielle php-fpm Docker . Les voici:
_ {La première méthode consiste à compiler les fichiers redis à partir des sources et à les installer.
RUN curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/2.2.7.tar.gz \
&& tar xfz /tmp/redis.tar.gz \
&& rm -r /tmp/redis.tar.gz \
&& mv phpredis-2.2.7 /usr/src/php/ext/redis \
&& docker-php-ext-install redis
Le script docker-php-ext-install
est inclus dans l'image php-fpm et peut compiler des extensions et les installer.
_ {La deuxième façon de le faire est avec PECL.} _
Comme TimWolla répondu , vous pouvez le faire avec PECL , mais dans mon cas, PECL n’est pas installé par défaut.
RUN pecl install -o -f redis \
&& rm -rf /tmp/pear \
&& echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini
Redis n'est pas une extension incluse dans «php-src», vous ne pouvez donc pas utiliser docker-php-ext-install
. Utilisez PECL :
RUN pecl install -o -f redis \
&& rm -rf /tmp/pear \
&& docker-php-ext-enable redis
Mon avis, le moyen le plus simple est:
RUN pecl install redis && docker-php-ext-enable redis
;)
Une version légèrement révisée de starikovs et skyred answers pour la version PHP 7 actuelle de l'image du menu fixe (testé sur php:7.0.8-fpm-Alpine
et php:7.0.8-Alpine
).
Utilise la version 3.0
récemment publiée (juin 2016) pour PHP 7.
ENV PHPREDIS_VERSION 3.0.0
RUN mkdir -p /usr/src/php/ext/redis \
&& curl -L https://github.com/phpredis/phpredis/archive/$PHPREDIS_VERSION.tar.gz | tar xvz -C /usr/src/php/ext/redis --strip 1 \
&& echo 'redis' >> /usr/src/php-available-exts \
&& docker-php-ext-install redis
Basé sur @starikovs répondre. J'ai ajouté une variable pour le style de menu fixe.
# install phpredis extension
ENV PHPREDIS_VERSION 2.2.7
RUN curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/$PHPREDIS_VERSION.tar.gz \
&& tar xfz /tmp/redis.tar.gz \
&& rm -r /tmp/redis.tar.gz \
&& mv phpredis-$PHPREDIS_VERSION /usr/src/php/ext/redis \
&& docker-php-ext-install redis
Si vous souhaitez utiliser redis en tant que gestionnaire de session;
RUN { \
echo 'session.save_handler = redis'; \
echo 'session.save_path = tcp://redis:6379'; \
} >> /usr/local/etc/php/conf.d/docker-php-ext-redis.ini
Si vous souhaitez utiliser l'extension redis avec PHP 7 en 2015 (emprunté à skyred 's's réponse);
ENV PHPREDIS_VERSION php7
RUN curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/$PHPREDIS_VERSION.tar.gz \
&& tar xfz /tmp/redis.tar.gz \
&& rm -r /tmp/redis.tar.gz \
&& mv phpredis-$PHPREDIS_VERSION /usr/src/php/ext/redis \
&& docker-php-ext-install redis
J'utilise une combinaison de PECL et du script d'extension de docker officiel PHP
RUN pecl bundle -d /usr/src/php/ext redis \
&& rm /usr/src/php/ext/redis-*.tgz \
&& docker-php-ext-install redis
Pour PHP7, vous devez attendre la version officielle de Redis Pecl ou utiliser git:
RUN apt-get update \
&& apt-get install git -y -q \
&& git clone -b php7 https://github.com/phpredis/phpredis.git /usr/src/php/ext/redis \
&& docker-php-ext-install redis
Version légèrement révisée de starikovs et skyred réponses pour la version actuelle de l'image du menu fixe .
# install phpredis extension
ENV PHPREDIS_VERSION 2.2.8
ADD https://github.com/phpredis/phpredis/archive/$PHPREDIS_VERSION.tar.gz /tmp/redis.tar.gz
RUN tar xzf /tmp/redis.tar.gz -C /tmp \
&& mkdir -p /usr/src/php/ext \
&& mv /tmp/phpredis-$PHPREDIS_VERSION /usr/src/php/ext/redis \
&& echo 'redis' >> /usr/src/php-available-exts \
&& docker-php-ext-install redis \
&& rm -rf /usr/src/php/ext/redis