Dockerのphp-fpm5.6でphpredis v3系をインストールする方法
概要
- Dockerでphp-fpm5.6のコンテナを作成
- 単純にphpredis バージョン3系がインストールできなかった
上記について対処したことの備忘録です。どうしてもphp5.6系を使わないといけない方には役立つかもしれません。
古いバージョンを使う事によるセキュリティ的な脆弱性とかについてはスルーしてください。
はじめに
数年前に作ったWebアプリケーションのサーバー移管をしました。このWebアプリケーションはnginxとphp-fpm、redisで構成されています。
このときバージョンアップをしようと思いましたが、WebフレームワークがPHP7系に対応していなかったり、移管期間が短いなどの都合でPHPやRedisのバージョンを変更しないで移管対応をすることになった経緯があります。
移管を行うにしてもローカル開発環境で動作確認が行いたかったので、Dockerで環境作成を行なった際、古いRedisがなかなかインストールできませんでした。その対応を記載します。
対応
Dockerfile
まず以下が対応結果です。
FROM php:5.6-fpm RUN apt update RUN apt -y upgrade RUN apt -y install \ tar unzip sudo vim less procps wget gnupg2 \ git # install phpredis RUN git clone https://github.com/phpredis/phpredis.git /tmp/phpredis \ && cd /tmp/phpredis \ && git checkout -b 3.1.6 refs/tags/3.1.6 \ && phpize \ && ./configure \ && make \ && make install \ && echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini COPY ./config/php.ini-development /usr/local/etc/php/php.ini VOLUME ["/var/run/php-fpm"]
git をインストール
後述のコンパイルに必要です。
RUN apt -y install \ tar unzip sudo vim less procps wget gnupg2 \ git
phpredisのバージョンを指定してコンパイルする
githubにてphpredisのリポジトリを確認して、インストールしたいRedisのバージョンタグを探してください。
今回は3.1.6を選択しました。
RUN git clone https://github.com/phpredis/phpredis.git /tmp/phpredis \ && cd /tmp/phpredis \ && git checkout -b 3.1.6 refs/tags/3.1.6 \ && phpize \ && ./configure \ && make \ && make install \ && echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini
php-fpmのdockerコンテナにログインしてライブラリが作成されていることを確認
$ find / -name "*redis*" | grep .so # 結果 /usr/local/lib/php/extensions/no-debug-non-zts-20131226/redis.so /tmp/phpredis/.libs/redis.so /tmp/phpredis/modules/redis.so
redisモジュールが有効になっていることを確認
$ php -m | grep redis # 結果 redis