普段 Docker で PHP と gulp を使うときは、それぞれのイメージを使って PHP のコンテナで Apache を起動して表示確認をしていました。

この方法で gulp 側では browserSync を使おうと思うと、browserSync は proxy 設定をする必要があるらしく、少し試してみたのですが上手くできませんでした。

更には PHP(+Apache) と Node.js の2つのコンテナを使うとなるとイメージの容量がかなり大きくなって、特に容量を気にしないで Dockerhub からイメージを選ぶと合わせて 1GB ほどまで膨らんでしまいます。

今回ちょうど gulp-connect-php と browserSync を連携させて利用する案件に参加することになったので、ある程度容量を節約して作業環境を構築してみました。

方法としては

  • php のイメージに Node.js をインストールする
  • Node.js のイメージに php をインストールする

のどちらかになります。

結論から言うと2つ目の「Node.js のイメージに php をインストールする」を採用しました。

というのも、php のイメージ(php:7-cli)に Node.js をインストールすると容量が 400MB ほどになるのですが、Node.js のイメージ(node:8-slim) に PHP をインストールした場合は約 260MB と 100MB 以上も節約できたからなのと、gulp の利用が中心なので npm install 時にエラーが出にくいのは Node.js の公式イメージの方だろう、という判断です。

Dockerfile の内容は至ってシンプルで次の内容になります。

FROM node:8-slim

RUN apt-get update -y && \
    apt-get install -y php5-cli && \
    npm install -g gulp

Docker の本来の使い方から考えると邪道なのかもしれませんが、コーディングの作業環境でまず大事なのは動くこと!

ということでこの環境は重宝しそうな気がします。


0件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください