ここ1,2年で注目を集めている仮想化技術の1つ「Docker」について、今更感がありますが試していきたいと思います。
他の仮想化技術との違いや特徴、開発環境として使っていくにはどうすればいいかなどを紹介していきたいと考えています。
これまでの連載
- Dockerであそぶ(1)DockerToolboxのインストール
- Dockerであそぶ(2)Centos7を実行する
- Dockerであそぶ(3)Apacheを使う
- Dockerであそぶ(4)Apacheの設定を変える
- Dockerであそぶ(5)Apache-PHP連携 ← 本記事!
- Dockerであそぶ(6)Apache-PHP-Mariadb連携
- Dockerであそぶ(7)PhpMyAdminのインストール
- Dockerであそぶ(8)docker-composeでコンテナをまとめて管理
- Dockerであそぶ(9)AWS EC2でdocker-composeを使う
- Dockerであそぶ(10)docker-machineを使ってAWS(EC2)に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/
うまくいきました。
今回はここまでにしたいと思います。