【作って納得!PHP入門】DockerでPHPの実行環境を作ろう

PHP

DockerでPHPの実行環境を作る方法を記載しています。
本記事では、dockerとdocker-composeコマンドを使用して、php, nginx, mysql, phpMyAdminが入っている環境を作成します。

PHPの実行環境について

PHPを実行する環境については、dockerを使用する他にもvagrant, mamp, xamppなどを使ったりローカルに直接インストールするなどの方法があります。
今回はdockerを使用した環境を構築します。

dockerのメリットとして、下記などがあります。
・直接インストールするわけではないので、仮想環境を削除すれば綺麗に消せてローカル環境を汚さない
・Dockerfileやdocker-compose.ymlを用意することで、環境構築がコマンドひとつで可能

構成するファイルさえ用意すれば、開発環境の共有が可能なので、おすすめです。

この記事の目標(作るもの)について

dockerを使用した環境で、phpが使えるようにして”Hello, World”が出力されるプログラムを作成してみます。
作成してアクセスすると、このように表示されます。
DockerのPHPでHello, World

phpMyAdminが立ち上がっているかも画面から確認できるので、立ち上げた後に確認してみます。
アクセスすると、このように表示されます。

DockerでphpMyAdminを表示

今回作成する環境について

今回作成する環境を簡単に説明します。

  • php
    phpを実装するためのに入れています。
    今回は、nginxと連携するためにphp-fpmを使用しています。

  • nginx
    nginxはhtmlやphpの出力結果をクライアントのブラウザ画面に表示するためのwebサーバーです。

  • mysql
    データを保存しておくためのデータベースです。
    phpなどのプログラミング言語からアクセスして送信されたデータを保存したり参照したりするために使います。

  • phpMyAdmin
    mysqlのデータをweb画面で見るためのツールです。
    SQLを発行することもでき、データベースのデータ変更なども可能です。

Dockerとは

dockerは使用しているパソコンに仮想環境を作成するためのツールです。
定義したファイルを元に実行することにより、簡単に開発環境を作成できます。

Macで実行環境を作る

Docker Desktop for Macをインストールする

Docker Desktop for Macを公式サイトのこちらからインストールします。

赤枠の箇所をクリックすると、ダウンロードが始まるのでダウンロードが終わるまで待ちます。

Docker for Macのダウンロード

ダウンロードが終わったあとは、ダウンロードしたdmgファイルをクリックすると、このように表示されます。
左から右にドラック&ドロップして、アプリケーションディレクトリにDockerを配置します。

あとは、アプリケーションディレクトリにあるDockerをクリックすると起動します。
このようにパソコンの右上にアイコンが表示されているので、動作していることが確認できます。

Windowsで実行環境を作る

Windows10 Proでないと、Docker Desktop for Windowsは使えないようでした。

Docker Desktop for Windowsをインストールする

Docker Desktop for Windowsを公式サイトのこちらからインストールします。

赤枠の箇所をクリックすると、ダウンロードが始まるのでダウンロードが終わるまで待ちます。

Docker for Windowsのダウンロード

ダウンロードしたファイルをインストールして、windowsの常駐しているアイコンの箇所にdockerのアイコンが出ていると完了です。

Dockerを使ってみる

インストールしたDockerを使用して、PHPの実行環境を作成します。

dockerコマンドが使えるか確認する

ターミナルを立ち上げたら、下記のコマンドを実行します。

$ docker -v

コマンドを実行すると、このようにバージョン情報が返ってきます。
問題なくバージョンが確認できればOKです。

$ docker -v
Docker version 20.10.2, build 2291f61

コンテナの構成ファイルのインストール

docker-compose.ymlなどのファイルをこちらに置いているので、git cloneするかダウンロードします。

任意のディレクトリにて、git cloneする場合は下記のコマンドを実行してください。

$ git clone https://github.com/YasuakiHirano/codelike_web_docker.git

実行したディレクトリ配下にcodelike_web_dockerディレクトリが作成されます。
cdコマンドで、移動して環境を立ち上げます。

$ cd codelike_web_docker

docker-composeコマンドで立ち上げる

codelike_web_dockerに移動した後に、下記のコマンドを実行します。

$ docker-compose -f .codelike_web_docker/docker-compose.yml up -d

すると、このようにインストールなどが走るので暫く待ちます。

$ docker-compose -f .codelike_web_docker/docker-compose.yml up -d
Creating network "codelike_web_docker_default" with the default driver
Building php
Step 1/8 : FROM php:fpm
 ---> 1e915dc40edc

// ---- 省略 ----

Creating codelike_web_mysql ... done
Creating codelike_web_phpmyadmin ... done
Creating codelike_web_php        ... done
Creating codelike_web_nginx      ... done

このように、4つそれぞれ、doneが出てきていたら環境構築完了です。

docker psコマンドを実行してみます。

$ docker ps

すると、このようにコンテナが立ち上がっていることが確認できます。(出力結果は一部省略しています)

$ docker ps
NAMES
codelike_web_nginx
codelike_web_phpmyadmin
codelike_web_php
codelike_web_mysql

立ち上がった環境を画面から確認する

立ち上がっていることはdocker psで確認可能ですが、実際にphpが動いているか確認してみます。

エディターを開いてください。一番簡単で有名すぎるプログラムを書きます。
下記の内容をindex.phpという名前で作成して、codelike_web_dockerディレクトリ配下に保存します。

<?php
echo "Hello, World!!";

保存したら、http://localhost:8080にアクセスしましょう。
このように表示されたら成功です。

phpMyAdminも画面で確認できるので、アクセスしてみましょう。
http://localhost:8888にアクセスしましょう。
このように表示されたら成功です。

このポート番号(8080、8888)は.codelike_web_docker/docker-compose.ymlに定義してあるため、この番号になっています。

docker環境の停止について

dockerの環境を使用しない場合は停止しておきましょう。
下記のコマンドを実行すると停止できます。

$ docker-compose -f .codelike_web_docker/docker-compose.yml down

また、起動し直す場合は下記のようにupコマンドを使用します。

$ docker-compose -f .codelike_web_docker/docker-compose.yml up -d

dockerコンテナへのログイン・ログアウト

dockerのphpコンテナにログインしてコマンドを実行する方法と、ログアウトについてです。
phpコマンドを使いたい場合などはログインして、使うことができます。

ログインする

下記コマンドでphpのコンテナに入ることが可能です。

$ docker-compose -f .codelike_web_docker/docker-compose.yml exec php /bin/bash

phpコンテナと、ローカルのindex.phpを置いたディレクトリ配下は共有しているので、同じファイルが配置されています。
下記のように、lsコマンドで確認すると表示されます。

root@f0635bc4aacf:/var/www/html# ls
README.md  index.php

phpのバージョンを確認するにはphpコマンドにvオプションを付けます。

root@f0635bc4aacf:/var/www/html# php -v
PHP 7.4.9 (cli) (built: Aug  6 2020 19:20:05) ( NTS )
Copyright (c) The PHP Group

ログアウトする

exitコマンドを使うと、ログアウトして元の環境に戻ることが可能です。

root@f0635bc4aacf:/var/www/html# exit
exit
xxx codelike_web_docker $

この環境のドキュメントルートについて

ドキュメントルートはwebサーバーのファイル外部に公開するファイルを置いている場所になります。
今回作成した環境でのドキュメントルートは`codelike_web_docker配下になります。

index.phpをcodelike_web_dockerに配下に置いて、実行しました。
index.phpという名前は特殊な名前で、nginxの設定で、そのディレクトリに来たら表示するようにしています。

なので、http://localhost:8080/でindex.phpが読み込まれました。
index.php以外の名前で、PHPを実行した場合は、URLにファイル名をつけるようにしましょう。

例えば、hello.phpという名前のファイルを作成して、ブラウザの画面で実行・表示したい場合ですが
http://localhost:8080/hello.phpとしてください。

その他のPHP入門のオススメ記事

そのほかに、このブログで書いているオススメ記事をご紹介します。

変数を使ってみよう

作った環境を使用して、PHPの変数を使ってみましょう。詳細は下記です。

PHP入門の記事一覧に戻る

こちらに他の情報もありますので、合わせてご確認ください。

コメント

  1. ワタル より:

    yasuaki 様

    Docker – PHP環境構築とても参考になりました。ありがとうございます!

タイトルとURLをコピーしました