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”が出力されるプログラムを作成してみます。 作成してアクセスすると、このように表示されます。
phpMyAdminが立ち上がっているかも画面から確認できるので、立ち上げた後に確認してみます。 アクセスすると、このように表示されます。
今回作成する環境について
今回作成する環境を簡単に説明します。
- php phpを実装するためのに入れています。 今回は、nginxと連携するためにphp-fpmを使用しています。
- nginx nginxはhtmlやphpの出力結果をクライアントのブラウザ画面に表示するためのwebサーバーです。
- mysql データを保存しておくためのデータベースです。 phpなどのプログラミング言語からアクセスして送信されたデータを保存したり参照したりするために使います。
phpMyAdmin mysqlのデータをweb画面で見るためのツールです。 SQLを発行することもでき、データベースのデータ変更なども可能です。
Dockerとは
dockerは使用しているパソコンに仮想環境を作成するためのツールです。 定義したファイルを元に実行することにより、簡単に開発環境を作成できます。

コメント
yasuaki 様
Docker – PHP環境構築とても参考になりました。ありがとうございます!
お役に立てて何よりです😄
お世話になります。
docker compose.ymlを実行中に以下のエラーが出て止まってしまいました。
お手数ですが、回避策をご教示いただければ幸いです。
どうぞよろしくお願いいたします。
path /mnt/c/Users/user name/web_docker/.codelike_web_docker/php/log is mounted on /mnt/c but it is not a shared mount.
余談ですが、lamp環境を作りたくてdocker composeでインストールするも、mysqlだけが起動できずにいます。ネットでも同様の状況になる方がいらっしゃり、サイトを参考に何度もトライしましたができませんでした。。。途方に暮れていた時にこちらのサイトにたどり着きました。
なんとか起動させたいです。
よろしくお願いいたします。
ご覧いただきありがとうございます。
エラーとしては
.codelike_web_docker/php/logフォルダが共有されていないような感じですね。お使いのパソコンはWindowsでしょうか?
こちらにあるように下記コマンドで、dockerボリュームを削除した後に再起動してみてはいかがでしょうか。
お世話になっております。
ご連絡ありがとうございます。
当方、win10Proを使用しております。
昨日エラーが出た時点で、dockerのtroubleshootからReset to factory defaultsを実行してして空っぽの状態にしたのですが、これはdocker volume rm -fと同じことをしたと理解してよいでしょうか。
先ほど再度docker-composeを実行し、インストールできました!
この度はご教示くださり、ありがとうございました。
お世話になります。
なるほど、Windowsでしたか。
「Reset to factory defaults」は設定やデータなど全てを初期化してくれるようですね。
docker volume rm -f [volume名]は、dockerで作成された指定したvolumeを削除するので、範囲がもっと狭い感じですね。とりあえず上手く動いたということで、よかったです😄
初めまして。お世話になります。
docker-compose -f .codelike_web_docker/docker-compose.yml up -dの実行中に、Container codelike_web_php の部分のみエラーが出て上手く立ち上がりません。
エラーの文章は下記の通りです。
Error response from daemon: invalid mount config for type “bind”: bind source path does not exist: /Users/ryotaro/php_study/codelike_web_docker/.codelike_web_docker/php/log
セキュリティ関連かなと思いdocker desctopやmacbookの設定をいじりましたがエラーは以前として同様です。お手数ですがご確認お願いいたします。
初めまして、ご覧いただきありがとうございます。
「パスが存在しません」みたいなエラーですね。
ディレクトリの権限まわりが怪しそうです。
.codelike_web_dockerの配下にphpディレクトリを作成して、その中にlogディレクトリを作成してみてください。その後に
.codelike_web_dockerに対して、chmod -R 777 .codelike_web_dockerなどとして権限を変更してみてください。これで立ち上がらない場合は、下記のようにフルディスクアクセスを設定してみてください。
https://github.com/docker/docker.github.io/issues/4709#issuecomment-639596451
以上になります、よろしくお願いします。