Laravel docker-compose up
とかググるとそれっぽい構成が書かれた記事がヒットする。
だがそれでは太古の昔の、たとえばLaravel5のアプリケーションは動作しない。いつだって太古のアプリケーションを動作させたいという需要はあるものだ。最近も2020年のタイムスタンプでWindows10にVB6の開発環境を構築するには? のようなタイトルの記事を見かけて「VB6すげー」と思ったものだ。それに比べたらPHP5なんてまだまだ若造よ。
さて、今どきのPHP開発環境を作ろうぜ! 記事ではアプリケーションコンテナのベースイメージに php:7.x-fpm-xxx
が使われていることが多い。
「じゃぁそのバージョンを5系にすれば動くでしょ」と試してもなんだか難しかった。どうにも依存関係のパッケージが見つからない(php-mcrypt
とか)。
動かしたいバージョンが現役だったころのバージョンのディストリビューションのイメージをベースに構築すると、とりあえずは太古のアプリケーションが動作するイメージができた。他のコンテナや docker-compose.yml
の構成はそれっぽい構成を参考にすればよい。
自分の手元のDockerfileはこんな感じになった。
FROM centos:centos7 # CentOS7のyumリポジトリのPHPのバージョンは5.4。 # $ php --version # PHP 5.4.16 (cli) (built: Apr 1 2020 04:07:17) # パッケージは精査していない。この辺使っていたよなー? を入れただけ。 # 一応 https://readouble.com/laravel/5.0/ja/installation.html のサーバー要件は意識した。 RUN yum install -y epel-release \ && yum install -y php \ php-cli \ php-common \ php-devel \ php-fpm \ php-gd \ php-mbstring \ php-mcrypt \ php-mysql \ php-pdo \ php-xml \ && php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer # アプリケーションのコードをコピーして依存関係も入れておいた。 WORKDIR /var/www/html COPY ./ ./ RUN composer install # 既定の設定を上書きしたいならする。 COPY ./php.ini /etc/php.ini # 既定の設定では localhost からのみ接続できるように構成されているので、他のコンテナから接続できるように設定する。 COPY ./www.conf /etc/php-fpm.d/www.conf EXPOSE 9000 CMD ["php-fpm"]
www.conf はデフォルトからこの辺りを変えた。 (ローカルホスト以外もリスニング、ローカルホスト以外からも接続を許可する、ステータス表示を有効にする)
--- www.conf.org +++ www.conf @@ -11,3 +11,3 @@ ; Note: This value is mandatory. -listen = 127.0.0.1:9000 +listen = 9000 @@ -23,3 +23,3 @@ ; Default Value: any -listen.allowed_clients = 127.0.0.1 +;listen.allowed_clients = 127.0.0.1 @@ -120,3 +120,3 @@ ; Default Value: not set -;pm.status_path = /status +pm.status_path = /status
イメージのサイズ? 多分でかい! 500MBくらいあった。動かすのが目的なのででかくてもいい。こうして浪費するためにPCを新調するときににSSD1TBを選んだのだ。
単に動かしたいだけならPHPもNginxもMySQLも全部入りのコンテナ1つでよいのだろうけれど、今年の抱負に docker-compose する、があるので試せて丁度よかった。