Docker Composeでphpmyadminを導入する
Docker Compose
でphpmyadmin
を導入する方法を紹介します。
Docker Composeでphpでmysqlにアクセスするで作成した環境に対して修正を行っていきます。
phpmyadminの設定
phpmyadmin
のコンテナを作成します。
docker-compose.yml
version: '3'
services:
web:
image: nginx
depends_on:
- app
ports:
- "8080:80"
volumes:
- ./docker/web/default.conf:/etc/nginx/conf.d/default.conf
- .:/var/www/html
app:
build: ./docker/app
depends_on:
- db
volumes:
- ./docker/app/php.ini:/usr/local/etc/php/php.ini
- .:/var/www/html
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: docker_db
MYSQL_USER: docker_user
MYSQL_PASSWORD: docker_pass
ports:
- "3306:3306"
volumes:
- ./docker/db/data:/var/lib/mysql
- ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
phpmyadmin:
image: phpmyadmin/phpmyadmin
depends_on:
- db
environment:
- PMA_ARBITRARY=1
- PMA_HOSTS=db
- PMA_USER=docker_user
- PMA_PASSWORD=docker_pass
ports:
- "3000:80"
volumes:
- ./docker/phpmyadmin/sessions:/sessions
localhost:3000
でphpmyadmin
の管理画面にアクセスできるように設定しています。
セッション情報をボリュームに設定して永続化するようにします。
- カレントディレクトリ
- docker
- web
- default.conf
- app
- php.ini
- DockerFile
- db
- data
- my.cnf
- phpmyadmin ←追加
- sessions ←追加
- web
- docker-compose.yml
- index.html
- info.php
- connect.php
- docker
コンテナを起動後、localhost:3000
にアクセスするとphpmyadmin
の管理画面が表示されることを確認できます。
環境構築の最中はデータベースの設定情報などを初期化したいため、mysql
のコンテナを再起動するときは以下のコマンドで永続化したフォルダを削除してから起動するようにします。
$ sudo rm -rf docker/db/data
また、コンテナを起動直後にデータベースにアクセスすると以下のエラーになることがあります。
SQLSTATE[HY000] [2002] Connection refused
エラーが表示された場合は少し(30秒ほど)待ってから再度確認してみてください。