【開発環境 #6】PHP, phpMyAdmin, MariaDBをDocker Composeで【WSL2,Docker】
今回は「PHP・phpMyAdmin・MariaDB」を使用し、より本番環境に近い開発環境を構築します。
前回はPHPが動くコンテナを用意しました。直観的には同じコンテナにphpMyAdmin、MariaDBを追加でインストールするように思えますが、そうではなく、phpMyAdmin、MariaDBにもそれぞれコンテナを用意し、各コンテナを連携させることで、より変化に強い環境をつくっていきます。複数コンテナの連携にはDocker Desktopと同時にインストールされたDocker Composeを使用します。
WSL2 + Docker の記事一覧
Docker イメージの選定
Docker Hubへアクセスし、使用したいイメージ名で検索します。
PHP
- Docker Hubの上部検索フォームで「php」と検索
- 検索結果からphp✓Official Imageを選択
- タブメニューのTagsをクリックし任意のバージョンを選択する
- 今回は7.4.27-apache
- 画面に表示されているphp:7.4.27-apacheが使用するイメージ名
phpMyAdmin
検索方法はPHPと同じです。契約サーバーなどの本番環境と合わせます。
今回は最新版を意味するphpmyadmin:latestを使用します。
MariaDB
検索方法はPHPと同じです。
今回はmariadb:10.5を使用します。
ビルドコンテキスト
Ubuntuの/home/dev/phpをビルドコンテキストとします。最終的に以下の構成になります。
home/dev/php
|-- docker/
| `-- php-apache/
| |-- Dockerfile
| `-- php.ini
|-- src/
| `-- info.php
`-- docker-compose.yml
Dockerfile
PHPのコンテナでComposerを使用したいので、マルチステージビルドを使用したDockerfileを作成します。
php.ini
Xdebug関連のみを載せています。
info.php
Docker Compose
完成したファイルは以下となります。設定項目の解説は省略しますが、環境変数やデータ永続化などを指定しています。
コンテナ操作
以下、Windows Terminal > Ubuntu にて行います。
$ pwd
/home/dev/php
作成 & 起動
docker-compose.ymlに書いた計3つのコンテナを起動します。
$ docker-compose up -d
Creating volume "php_database" with default driver
Building web
.....
Creating php_db_1 ... done
Creating php_phpmyadmin_1 ... done
Creating php_web_1 ... done
成功したようです。
- http://localhost:8080/info.phpにアクセスし、xdebugがインストールされていることを確認します。
- http://localhost:8081にアクセスし、phpMyAdminがインストールされていることを確認します。
停止
$ docker-compose stop
再始動
$ docker-compose restart
入る & 抜ける(bash)
# 入る
$ docker-compose exec web bash
# 抜ける
$ exit
停止 & 削除
$ docker-compose down
Dockerfile更新時の再ビルド
$ docker-compose dwon
$ docker-compose up -d --build