実際にPHPを動作させながらDokcerの基本的な使い方について紹介



Photo by Fotis Fotopoulos on Unsplash

こんにちは!
個人開発者の南です!

今回は、実際にPHPをDockerで動かすということを紹介します。

Dockerの立ち上げ方や、マッピング方法、作成したDocker環境の削除などについて一通り紹介致します。

実際にDockerでPHPを動かしてみる

まずはじめに、今回使用するフォルダを準備します。

下記の構成で、フォルダを準備しましょう!

docker_test_php
src/index.php
Dockerfile


index.phpの中身は下記のようにして、シンプルに「Hello Docker!」と表示するだけにします。

また、Dockerfileの中身は下記のようにします。

これで使用するフォルダの準備ができました。

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で動かす準備をします。

コマンドを入力すると下記のように、色々とダウンロードが始まります。


使用しているDocker buildについて

docker buildは、先程作った「Dockerfile」を元にDockerのコンテナを作るためのコマンドです。

流れ的には、まずはbuildコマンドでコンテナを作って、runコマンドで作ったコンテナを起動するといった感じになります。

今回使用しているbuildコマンドには、次のような構成になっています。

・「-t docker-php-test」
・「.」

-t docker-php-testについて

「-t docker-php-test」の部分は、実際に作るコンテナの名前を指定しています。

ダウンロードが終わった後に、下記のコマンドを打ち込んでみましょう。

打ち込むと下記のように表示されると思います。


「docker-php-test」と「PHP」という2つが表示されていると思います。

.について

buildコマンドの最後に「.」という項目が表示されていると思います。

ここには、Dokcerfileの場所を指定します。

今回は、同じディレクトリ内にDockerfileがあるので、「.」と指定しています。

runコマンドを使って、コンテナを起動する

今度は、runコマンドを使ってコンテナを起動しましょう。

コンテナを作成した後は、下記のコマンドを使ってコンテナを起動します。

打ち込むと下記のように、色々と表示されると思います。


エラーが出た場合

もし、上記のコードを入力して下記のようなエラーが出た場合は、Apacheの設定ファイルにサーバー名が書かれていないことが原因です。

DockerのApacheにSSHでログインするか、それか指定しているファイルのパーミッションが間違っていないか確認しましょう。

うまく起動できていると下記のように、index.phpの内容が表示されていると思います。


コンテナ起動につかったコマンドについて

今回コンテナを起動するのに、下記のコマンドを使いました。

使用したコマンドは、下記のように分けることができます。

・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としています。

コンテナの一覧について

起動したコンテナを表示するには、下記のコマンドを入力すると一覧画面が表示されます。


ちなみに下記のようにすると、起動していない他のコンテナも表示することができます。


コンテナの削除について

作成したコンテナを削除する場合は、下記のコマンドを入力します。

「コンテナのID」とは、一覧画面で表示されている「CONTAINER ID」の部分です。

実際に削除する時は、先頭の3文字を指定すればOKです。

実際に、一覧の中の「1b198377afef」のものを削除してみます。


先頭の「1b198377afef」のうち、3文字をとって「1b1」と指定します。


作成したイメージの一覧について

作成したイメージの一覧を表示するには、下記のコマンドを入力します。

すると、下記のようにイメージの一覧画面が表示されます。


イメージの削除方法について

イメージを削除するには、下記のコマンドを実行します。

「イメージID」とは、一覧画面で表示されている、IMAGE IDの部分を指します。

これもコンテナを削除した時と同じように、先頭3文字を指定するだけでOKです。


実際に、作成した「docker-php-test」を削除してみます。

「docker-php-test」のイメージIDは、「ed09eb01e1d6」なので先頭3文字「ed0」を指定してコマンドを実行します。

コマンドを実行すると、下記のように色々と表示されます。


イメージの一覧を表示すると削除されているのが、わかります。


まとめ

今回は実際にAPacheのサーバーを立ててPHPを動作させながら、Docker基本的な使い方について紹介しました。

この記事が僕と同じように、Docker触ってみたいけど触った後削除したりして、キレイにしたいと思っているあなたのお役に立てれば嬉しいです。

この記事を書いた人

南 健太郎

1991年生まれ。関西を中心にフリーのプログラマーをしています。
今は個人開発で生活できるようになるため、日々試行錯誤中。
個人開発や日々の技術に関する情報などを発信していきます。
Twitterやってます!
良かったらフォロー、よろしくお願いします!
Twitterのリンクはこちら