普段 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件のコメント