環境
- macOS Sierra
- Docker 17.06.0-ce-mac18
- Apache 2.4
- CentOS 7.0
- MySQL 5.5
- Laravel 5.0
前提条件
Lardockの基本的な導入手順を踏み、docker-compose up -d
コマンドでコンテナを起動する直前までの工程が終了していること
すでに起動してしまっている場合、Laradockで使用するphp-fpmのコンテナとイメージを一度削除してください。
コンテナを停止、ネットワークとともに削除するコマンドは下記のとおりです。
$ docker-compose down
イメージは削除されないので、
$ docker ls -a
で全てのイメージを表示し、laradockを導入してビルドしたイメージを削除します。
導入手順
LaradockPHP5.5用のDockerfileは同梱されていません。
公式にPHP5.5の裏技的な導入手順が書いてあるのですが、一部足りないところがあるようだったので補足します。
php-fpmをcloneする
php-fpmコンテナ内のPHPのバージョンが、アプリケーションを開発するためのPHPのバージョンになります。
php-fpmは、Laradock本体のリポジトリとは別にベースイメージのためのリポジトリが存在します。
(本体: https://github.com/laradock/laradock)
(ベースイメージ用: https://github.com/laradock/php-fpm)
まず、最新のLaradockをクローンしたときにディレクトリ構成に含まれるphp-fpmではなく、ベースイメージ用のphp-fpmの方をクローンします。
$ cd { 好きなディレクトリ }
$ git clone https://github.com/laradock/php-fpm
$ cd php-fpm
Dockerfile-56をDockerfile-55にリネームする
先ほどクローンしたリポジトリの中のDockerfileをリネームします。
$ mv Dockerfile-56 Dockerfile-55
Dockerfile-56だったものを、Dockerfile-55として使います。
Dockerfile-55を書き換える
DockerHubのphp-5.5-fmpのイメージを元に、Laradockのphp-fpmコンテナ用イメージをビルドするようにします。
- FROM php:5.6-fpm
+ FROM php:5.5-fpm
また、ここでつくったDockerfile-55はクローンしたLaravel本体のphp-fpm配下に移動しておくとdocker-composeでの管理が便利になります。
$ mv Dockerfile-55 {開発ディレクトリ}/laradock/php-fpm
docker-compose.ymlを書き換える
serviceのphp-fpmのdockerfileの項目で、Dockerfile-55をもとにイメージをbuildするよう指定します。
- dockerfile: "Dockerfile-${PHP_VERSION}"
+ dockerfile: "Dockerfile-55"
公式の手順ではここまでになっています。ここからが補足情報です。
DockerfileにWORKDIRを追記する
上記手順だとコンテナ起動時にGoのランタイムエラーが出てしまうといissueがあります。
ランタイムエラーを回避するため、Dockerfile-55にWORKDIRを追記します。
FROM php:5.5-fpm
+ WORKDIR /var/www
php55.iniを置く
デフォルトの設定ではphp71.iniを読むようになっているので、php55.iniをつくり読み込むようにします。
php.netからPHP5.5をダウンロードし、php.iniをphp55.iniにリネームします。
php55.iniをlaradock/php-fpm配下におきます。
$ mv php.ini php55.ini
$ mv php55.ini {開発ディレクトリ}/laradock/
docker-compose.ymlを編集してphp55.iniを読み込むようにします。
volumes:
- - ./php-fpm/{$PHP_VERSION}.ini:/usr/local/etc/php/php.ini
+ - ./php-fpm/php55.ini:/usr/local/etc/php/php.ini
イメージをbuildしてコンテナを起動する
docker-compose up
コマンドで各Dockerfileからイメージをbuildし、コンテナを起動します。
オプションに-d
をつけて実行すると、コンテナをバックグラウンドで起動し(デタッチドモード)、実行したままにできます。
また、開発環境で使うもののみイメージをビルドするように指定します。
$ docker-compose up -d workspace apache2 mysql php-fpm
5.5-fpmのタグがついたphpのイメージと、それをもとにしたlaradock_php-fpmというイメージがビルドされていることを確認します。
$ docker image ls
laradock_php-fpm latest 5f56d9fdfff8 31 hours ago 402MB
php 5.5-fpm 4c52b9f20fae 11 months ago 362MB
laradock_php-fpm_1 コンテナ内のPHPのバージョンが5.5になっていることを確認します。
オプションで--rm
をつけると、対象のコンテナを実行後に削除してくれます。停止しているコンテナに入ることなくバージョン確認などができるので便利です。
コンテナがデタッチドモードで起動されている場合は無視されるので、--rm
オプションはなくても同じ挙動になります。
$ docker-compose run --rm php-fpm php -v
PHP 5.5.38 (cli) (built: Aug 10 2016 21:09:37)