【作って納得!PHP入門】Dockerで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は使用しているパソコンに仮想環境を作成するためのツールです。 定義したファイルを元に実行することにより、簡単に開発環境を作成できます。

コメント

  1. ワタル より:

    yasuaki 様

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

  2. beginner より:

    お世話になります。
    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だけが起動できずにいます。ネットでも同様の状況になる方がいらっしゃり、サイトを参考に何度もトライしましたができませんでした。。。途方に暮れていた時にこちらのサイトにたどり着きました。
    なんとか起動させたいです。
    よろしくお願いいたします。

    • yasuaki より:

      ご覧いただきありがとうございます。
      エラーとしては.codelike_web_docker/php/logフォルダが共有されていないような感じですね。

      お使いのパソコンはWindowsでしょうか?
      こちらにあるように下記コマンドで、dockerボリュームを削除した後に再起動してみてはいかがでしょうか。

      docker volume rm -f 
      • beginner より:

        お世話になっております。

        ご連絡ありがとうございます。

        当方、win10Proを使用しております。

        昨日エラーが出た時点で、dockerのtroubleshootからReset to factory defaultsを実行してして空っぽの状態にしたのですが、これはdocker volume rm -fと同じことをしたと理解してよいでしょうか。

        先ほど再度docker-composeを実行し、インストールできました!

        この度はご教示くださり、ありがとうございました。

        • yasuaki より:

          お世話になります。
          なるほど、Windowsでしたか。

          「Reset to factory defaults」は設定やデータなど全てを初期化してくれるようですね。
          docker volume rm -f [volume名]は、dockerで作成された指定したvolumeを削除するので、範囲がもっと狭い感じですね。

          とりあえず上手く動いたということで、よかったです😄

  3. ryotaro より:

    初めまして。お世話になります。

    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の設定をいじりましたがエラーは以前として同様です。お手数ですがご確認お願いいたします。

    • yasuaki より:

      初めまして、ご覧いただきありがとうございます。

      「パスが存在しません」みたいなエラーですね。
      ディレクトリの権限まわりが怪しそうです。

      .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

      以上になります、よろしくお願いします。