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
でインストールしました。しかし、上記のアプローチを使用してどのようにインストールできますか?
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
Redisは「php-src」に含まれている拡張機能ではないため、docker-php-ext-install
。 [〜#〜] pecl [〜#〜] を使用します。
RUN pecl install -o -f redis \
&& rm -rf /tmp/pear \
&& docker-php-ext-enable redis
私の意見では、最も簡単な方法は次のとおりです。
RUN pecl install redis && docker-php-ext-enable redis
;)
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
@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
セッションハンドラとして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
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
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
これはアルパインの画像に有効です:
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
編集:欠落しているバックスラッシュを追加
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