Skip to content

mistymagich/docker-php-env

Repository files navigation

docker-php-env

Docker(Docker Compose)で作るPHPの開発用実行環境

php,nginx,mysqlのコンテナを動かして、PHPを実行させる環境です。

必要なもの

Windows環境の場合、仮想OSとしてCoreOSを起動し、そこから起動させます。 Docker,Docker ComposeはCoreOSに含まれているのでインストールの必要はありません。

セットアップ

	git clone https://github.com/mistymagich/docker-php-env.git
    cd docker-php-env
	docker-compose up

hostsファイルに以下を追加します

	127.0.0.1 sandbox.local

Windowsの場合

	git clone https://github.com/mistymagich/docker-php-env.git
    vagrant up
  • Vagrant Host Managerによってhostsファイルの編集が行われるので、手動での編集は不要。
  • hostsファイルがアンチウイルスソフトなどによって編集不可にされている場合があるので、あらかじめ解除しておく。

正常に起動できれば、ブラウザで http://sandbox.local でアクセスするとPHPInfoが表示されます。

構造

Nginxコンテナ

公式Nginxコンテナをもとに、Set up Automatic Virtual Hosts with Nginx and Apacheの設定を用いて、任意のホスト名「hoge.local」に対して、ドキュメントルートはホストOSにある「www/hoge/public」を参照するようにしています。

ゲストOSのポートTCP80,443にアクセスすることでNginxコンテナにアクセスできます。

MySQLコンテナ

公式MySQLコンテナをそのまま利用しています。

データの永続化はしていません。

ゲストOSのポートTCP3306にアクセスすることでMySQLコンテナにアクセスできます。

ユーザー名はroot、パスワードはdocker-compose.ymlにある環境変数MYSQL_ROOT_PASSWORDの値です。

PHP(FPM)コンテナ

公式PHPコンテナのFPMをもとに、以下のモジュールを追加しています。

  • pdo
  • pdo_mysql
  • gd
  • mysqli
  • mcrypt
  • mbstring
  • iconv
  • xdebug

ホスト名mysqlでMySQLコンテナを参照します。

関係図

関係図

PHP(FPM)コンテナはホスト名mysqlでMySQLコンテナにアクセスできます。 Nginxコンテナはホスト名phpでPHP(FPM)コンテナを参照しています。

PHPMyAdminのインストールサンプル

(Windowsの場合) Vagrantfileconfig.hostmanager.aliasesphpmyadmin.localを追加してvagrant up (それ以外) hostsファイルに以下を追加します

	127.0.0.1 phpmyadmin.local
  1. wwwフォルダにphpmyadminフォルダを作成し、さらにその中にpublicフォルダを作成する

  2. PHPMyAdminをダウンロード

  3. 解凍して、中にあるPHPファイルを2.で作成したpublic以下にコピー

  4. config.sample.incをconfig.incにリネーム

  5. config.incを編集

    ホスト名を変更

      /* Authentication type */
      $cfg['Servers'][$i]['auth_type'] = 'cookie';
      /* Server parameters */
     -$cfg['Servers'][$i]['host'] = 'localhost';
     +$cfg['Servers'][$i]['host'] = 'mysql';
      $cfg['Servers'][$i]['connect_type'] = 'tcp';

    "?>"の直前に追加

      $cfg['CheckConfigurationPermissions'] = false;
      ?>
  6. http://phpmyadmin.local にアクセス

  7. ID:root / PW:mysecretpw でログイン(docker-compose.ymlにある環境変数MYSQL_ROOT_PASSWORDの値)

その他

コンテナのログ出力

    docker-compose logs

Nginxコンテナ、MySQLコンテナ、PHP(FPM)コンテナのログ出力がまとめて表示されます。 windowsの場合は、ゲストOSにSSHログインしてコマンドを実行する

参考

About

Docker+PHP(+Vagrant)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published