Dockerであそぶ(5)Apache-PHP連携


ここ1,2年で注目を集めている仮想化技術の1つ「Docker」について、今更感がありますが試していきたいと思います。
他の仮想化技術との違いや特徴、開発環境として使っていくにはどうすればいいかなどを紹介していきたいと考えています。

これまでの連載

イメージにPHPをインストールする

今回はPHPをインストールし、動作確認をしてみたいと思います。
もっとも簡単な方法は前回Apacheを実行したときのように、PHPのOfficialイメージを使用する方法ですが、今回は応用の効く方法を使っていきます。

まずは、フォルダを新しくつくります。
phpフォルダはDockerfileを置くためのフォルダ、public-htmlフォルダはホストとコンテナで共有するためのフォルダです。

$ mkdir -p ~/Documents/docker/php
$ mkdir -p ~/Documents/docker/php/public-html

phpフォルダに新しくDockerfileを作ります。

FROM centos:latest
RUN yum -y update && \
    yum -y install httpd php
EXPOSE 80
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

新しく3つのコマンドが出てきました。

コマンド 概要
RUN コマンドを実行します。完成するイメージファイルをなるべく小さくするために、上記のように「&&」でコマンド連結することが推奨されています。
EXPOSE 外部に公開するポートを指定します。
CMD 「docker run」時に実行されるコマンドです。オプションを指定したい場合は、上記のように[]で括って記述します。

イメージをビルドする際に何らかのコマンドを実行したい場合には、このようにRUNコマンドで行うことができます。
上記の例では「yum -y update」でパッケージを最新化した後に、「yum -y install httpd php」でApacheとPHPのインストールを行っています。
注意点としては、dockerでは「docker run」時に実行されているコマンドが終了すると、コンテナが自動的に終了してしまう仕様になっています。
そのため、Dockerfile内にCMDコマンドを記述する際には、フォアグラウンドで処理しつづけるように上記のように「-D FOREGROUND」オプションを付与する必要があります。

public-htmlフォルダには動作確認用のPHPファイル(index.php)を作ります。

<?php
phpinfo();

次にイメージをビルドしコンテナを作ります。

$ cd ~/Documents/docker/php
$ docker build -t my-php .

今回は新しいイメージファイルに「my-php」という名前を付けました。

コンテナを作成して実行する

では、作成したイメージを実行します。

$ docker run -it --rm -p 80:80 -v //c/Users/sudoy/Documents/docker/php/public-html/:/var/www/html/ my-php

ホストとコンテナで共有するフォルダのパスが以前とは若干異なっているため、注意してください。上記は筆者の環境ですので適宜読み替えてください。

以下のURLにアクセスします。

http://192.168.99.100/

スクリーンショット 2016-01-04 13.09.38

うまくいきました。
今回はここまでにしたいと思います。

  • このエントリーをはてなブックマークに追加

PAGE TOP