オリジナルイメージ(3) Apache+PHP+ソースファイルのイメージ作成 Docker入門-11
ApacheとPHPをインストールして、phpのソールファイル(index.phpのみ)をコピーしたイメージを作ってみる。
ApacheとPHPはaptを使ってインストールし、その後DocumentRootにPHPをコピーする。
ワークディレクトリをapとする。この中に用意するファイルは2つ。
index.php
<html> <body> Your IP <?php echo $_SERVER['REMOTE_ADDR']; ?> </body> </html>
Dockerfile
FROM debian EXPOSE 80 ENV DEBIAN_FRONTEND=noninteractive RUN apt update \ && apt install -y apache2 php libapache2-mod-php \ && apt clean \ && rm -rf /var/lib/apt/lists/* \ && rm /var/www/html/index.html COPY index.php /var/www/html/ CMD /usr/sbin/apachectl -DFOREGROUND STOPSIGNAL SIGWINCH
内容は次の通り
(1) debianイメージをベースに構築する
(2) ポート80で通信をすることを想定している
(3) aptでワーニングが出ないように変数設定 ← 設定したのにワーニング出た
(4) RUNコマンドにてapache2 php libapache2-mod-php をインストールし、ワークワイルをクリアした後、デフォルトのindex.htmlを削除
(5) ソースファイルであるindex.phpをDocumentRootにコピー
(6) Apacheをフォアグラウンドで実行するよう指定
(7) 終了シグナルをSIGWINCHに変更
イメージを作成してみる
$ cd ap $ docker build . -t myimg ...(snip)... Successfully built 90c2d82e3463 Successfully tagged myimg:latest
出来たイメージを確認する
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE myimg latest 90c2d82e3463 3 minutes ago 254MB
コンテナを起動する
$ docker container run -dit --name myphpimg -p 8080:80 myimg
ブラウザでアクセスして動作確認したら削除しておく
$ docker container stop myphpimg $ docker container rm myphpimg
なお、続けて同じようにビルドをかけると一瞬で出来上がる。これはキャッシュを使用しているためである。もしキャッシュを使用せずに新たにビルドしたいときは --no-cache オプションをつける。
$ docker build . -t myimg --no-cache