web-dev-qa-db-fra.com

Comment installer une extension php-redis avec l'officiel PHP Approche de l'image Docker?

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?

37
starikovs

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
12
starikovs

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
42
TimWolla

Mon avis, le moyen le plus simple est:

RUN pecl install redis && docker-php-ext-enable redis

;)

20
Pavel

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
13
otherguy

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
10
skyred

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
6
masakielastic

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
2
isp_developer

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
0
selim13