web-dev-qa-db-ja.com

公式のPHP Dockerイメージアプローチを使用してphp-redis拡張機能をインストールする方法は?

official PHP Docker image に基づいてphp-redis拡張モジュールを使用してPHP-FPMイメージを構築します。たとえば、このDockerfileを使用します: php:5.6-fpm

ドキュメントでは、この方法で拡張機能をインストールでき、拡張機能の依存関係を手動でインストールできると述べています。

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"]

Dockerなしで、apt-get install php5-redisでインストールしました。しかし、上記のアプローチを使用してどのようにインストールできますか?

43
starikovs

php-redis 公式の拡張機能 php-fpm Docker image をインストールする2つの方法を見つけました。どうぞ:

最初の方法は、ソースからredisをコンパイルしてインストールすることです

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

docker-php-ext-installスクリプトはphp-fpmイメージに含まれており、拡張機能をコンパイルしてインストールできます。

2つ目の方法はPECLを使用することです

TimWolla answered のように、 [〜#〜] pecl [〜#〜] でそれを行うことができますが、私の場合、PECLはデフォルトではインストールされません。

RUN pecl install -o -f redis \
&&  rm -rf /tmp/pear \
&&  echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini
14
starikovs

Redisは「php-src」に含まれている拡張機能ではないため、docker-php-ext-install[〜#〜] pecl [〜#〜] を使用します。

RUN pecl install -o -f redis \
&&  rm -rf /tmp/pear \
&&  docker-php-ext-enable redis
51
TimWolla

私の意見では、最も簡単な方法は次のとおりです。

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

;)

27
Pavel

starikovs および skyred のわずかに改訂されたバージョンは、現在のPHP 7バージョンのdockerイメージ(php:7.0.8-fpm-Alpineでテスト済み)およびphp:7.0.8-Alpine)。

PHP 7の場合、新しくリリースされた3.0バージョン(2016年6月)を使用します。

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

@starikovsの回答に基づきます。 Dockerスタイルの変数を追加しました。

# 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

セッションハンドラとしてredisを使用する場合;

RUN { \
    echo 'session.save_handler = redis'; \
    echo 'session.save_path = tcp://redis:6379'; \
} >> /usr/local/etc/php/conf.d/docker-php-ext-redis.ini

PHP 7で2015年にredis拡張機能を使用する場合( skyred の回答から借用);

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

PECLとPHP公式docker拡張スクリプトの組み合わせを使用しています

RUN pecl bundle -d /usr/src/php/ext redis \
&& rm /usr/src/php/ext/redis-*.tgz \
&& docker-php-ext-install redis

PHP7の場合、redis peclの公式リリースを待つか、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

starikovs および skyred のわずかに改訂されたバージョンは、Dockerイメージの現在のバージョンに対して回答します。 php:5-fpm-Alpineでテスト済み

# 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

これはアルパインの画像に有効です:

RUN set -xe \
    && apk add --no-cache --update --virtual .phpize-deps $PHPIZE_DEPS \
    && pecl install -o -f redis  \
    && echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini \
    && rm -rf /usr/share/php \
    && rm -rf /tmp/* \
    && apk del  .phpize-deps

編集:欠落しているバックスラッシュを追加

0
grogowar

Dockerfileでレポジトリのクローンを作成し、以下を使用してインストールできます。

RUN git clone https://github.com/phpredis/phpredis.git /tmp/phpredis \
&& cd /tmp/phpredis \
&& git checkout -b 3.1.2 \ ## or the release you need #
&& phpize \
&& ./configure \
&& make \
&& make install
0
azuax