Photo by Fotis Fotopoulos on Unsplash
こんにちは!
個人開発者の南です!
今回は、実際にPHPをDockerで動かすということを紹介します。
Dockerの立ち上げ方や、マッピング方法、作成したDocker環境の削除などについて一通り紹介致します。
実際にDockerでPHPを動かしてみる
まずはじめに、今回使用するフォルダを準備します。
下記の構成で、フォルダを準備しましょう!
docker_test_php
src/index.php
Dockerfile
index.phpの中身は下記のようにして、シンプルに「Hello Docker!」と表示するだけにします。
1 |
echo "Hello Docker!"; |
また、Dockerfileの中身は下記のようにします。
1 2 3 |
FROM php:7.2-apache COPY src/ /var/www/html/ EXPOSE 80 |
これで使用するフォルダの準備ができました。
Dockerfileの中身について
少しDockerfileの中身について紹介します。
Dokcerfileとは、Dockerコンテナ(サーバーの構成のようなもの?)をまとめたファイルになります。
下記の場合は、だと次のような構成になります。
1.FROM
2.COPY
3.EXPOSE
FROMについて
FROMは「どこのコンテナを基盤とするか?」を指しています。
今回だと、Dockerのオフィシャルのphp:7.2-apacheというコンテナを使います。
test
COPYについて
COPYは「どこのソースをコピーするのか?」を指しています。
COPYの引数は2つあって、1つ目がローカルのフォルダ。2つ目がDokcer上のフォルダの場所になります。
Docker上のフォルダは使う、Webサーバによって異なります。
(今回はApacheを使うので、/var/www/html/がDocker上のフォルダの場所になります。)
EXPOSEについて
EXPOSEは「どのポートを使うか?」を指しています。
ポートとは、ネットワークが通信を行う際に使うドアのようなものです。
ちなみに、Webサーバの場合は80番を使うため、「EXPOSE 80」としています。
Dokcerfileを使ってコンテナを作成してみる
では、実際にDockerを使ってサーバーを立てて、「Hello Docker!」を表示してみます。
まずは、Dockerfileを使って、コンテナを作成していきましょう。
ターミナルを使って、先程用意したフォルダに移動します。
移動ができたら、今度は下記のコマンドを入力してDokcerで動かす準備をします。
1 |
docker build -t docker-php-test . |
コマンドを入力すると下記のように、色々とダウンロードが始まります。
使用しているDocker buildについて
docker buildは、先程作った「Dockerfile」を元にDockerのコンテナを作るためのコマンドです。
流れ的には、まずはbuildコマンドでコンテナを作って、runコマンドで作ったコンテナを起動するといった感じになります。
今回使用しているbuildコマンドには、次のような構成になっています。
・「-t docker-php-test」
・「.」
-t docker-php-testについて
「-t docker-php-test」の部分は、実際に作るコンテナの名前を指定しています。
ダウンロードが終わった後に、下記のコマンドを打ち込んでみましょう。
1 |
docker images |
打ち込むと下記のように表示されると思います。
「docker-php-test」と「PHP」という2つが表示されていると思います。
.について
buildコマンドの最後に「.」という項目が表示されていると思います。
ここには、Dokcerfileの場所を指定します。
今回は、同じディレクトリ内にDockerfileがあるので、「.」と指定しています。
runコマンドを使って、コンテナを起動する
今度は、runコマンドを使ってコンテナを起動しましょう。
コンテナを作成した後は、下記のコマンドを使ってコンテナを起動します。
1 |
docker run -d -p 7777:80 -v /Users/your_user_name/Desktop/docker_test_php/src/:/var/www/html/ docker-php-test |
打ち込むと下記のように、色々と表示されると思います。
エラーが出た場合
もし、上記のコードを入力して下記のようなエラーが出た場合は、Apacheの設定ファイルにサーバー名が書かれていないことが原因です。
DockerのApacheにSSHでログインするか、それか指定しているファイルのパーミッションが間違っていないか確認しましょう。
1 |
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message |
うまく起動できていると下記のように、index.phpの内容が表示されていると思います。
コンテナ起動につかったコマンドについて
今回コンテナを起動するのに、下記のコマンドを使いました。
1 |
docker run -d -p 7777:80 -v /Users/your_user_name/Desktop/docker_test_php/src/:/var/www/html/ docker-php-test |
使用したコマンドは、下記のように分けることができます。
・docker run
・-d
・-p 7777:80
・-v /Users/your_user_name/Desktop/docker_test_php/src/:/var/www/html/
・docker-php-test
docker runコマンドについて
「docker run」コマンドは、指定したコンテナを起動するためのコマンドです。
-dオプションについて
「-d」オプションは、「–detach 」の省略系で、入れておくことでバックグラウンドでコンテナを起動し続けることができます。
このコマンドをつけない状態だと、「ctr+C」で画面を抜けた後でもコンテナが起動した状態になります。
-pオプションについて
「-p」オプションは、「 –publish list」の省略形で、ローカルで使用するポートを指定することができます。
指定する場合は、下記のようにします。
「ローカルのポート番号:コンテナのWebサーバーのポート番号」
コンテナのWebサーバーのポート番号については、80で固定ですが、ローカルについては、自由に指定できます。
今回だと、「7777」に指定しているので、「localhost:7777」で起動したコンテナにアクセスすることができます。
-vオプションについて
「-v」オプションは、「–volume list」の省略形で、ローカルとDockerのコンテナのフォルダをマウント(同期)することができます。
指定する場合は、下記のようにします。
「ローカルのフォルダ:コンテナのWebサーバーのフォルダ」
この設定をしておかないと、ファイルを更新した時に一度コンテナを停止して、もう一度コンテナを起動するという手間がかかります。
docker-php-testコマンドについて
最後の「docker-php-test」コマンドは使用するコンテナ名を指定します。
最初にDockerfileで作成したコンテナがdocker-php-testなので、docker-php-testとしています。
コンテナの一覧について
起動したコンテナを表示するには、下記のコマンドを入力すると一覧画面が表示されます。
1 |
docker ps |
ちなみに下記のようにすると、起動していない他のコンテナも表示することができます。
1 |
docker ps -a |
コンテナの削除について
作成したコンテナを削除する場合は、下記のコマンドを入力します。
1 |
docker rm コンテナのID |
「コンテナのID」とは、一覧画面で表示されている「CONTAINER ID」の部分です。
実際に削除する時は、先頭の3文字を指定すればOKです。
実際に、一覧の中の「1b198377afef」のものを削除してみます。
先頭の「1b198377afef」のうち、3文字をとって「1b1」と指定します。
1 |
docker rm 1b1 |
作成したイメージの一覧について
作成したイメージの一覧を表示するには、下記のコマンドを入力します。
1 |
docker images |
すると、下記のようにイメージの一覧画面が表示されます。
イメージの削除方法について
イメージを削除するには、下記のコマンドを実行します。
1 |
docker image rm イメージのID |
「イメージID」とは、一覧画面で表示されている、IMAGE IDの部分を指します。
これもコンテナを削除した時と同じように、先頭3文字を指定するだけでOKです。
実際に、作成した「docker-php-test」を削除してみます。
「docker-php-test」のイメージIDは、「ed09eb01e1d6」なので先頭3文字「ed0」を指定してコマンドを実行します。
1 |
docker image rm ed09eb01e1d6 |
コマンドを実行すると、下記のように色々と表示されます。
イメージの一覧を表示すると削除されているのが、わかります。
まとめ
今回は実際にAPacheのサーバーを立ててPHPを動作させながら、Docker基本的な使い方について紹介しました。
この記事が僕と同じように、Docker触ってみたいけど触った後削除したりして、キレイにしたいと思っているあなたのお役に立てれば嬉しいです。