zukucode
主にWEB関連の情報を技術メモとして発信しています。

Docker Composeでphpmyadminを導入する

Docker Composephpmyadminを導入する方法を紹介します。

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:3000phpmyadminの管理画面にアクセスできるように設定しています。

セッション情報をボリュームに設定して永続化するようにします。

  • カレントディレクトリ
    • docker
      • web
        • default.conf
      • app
        • php.ini
        • DockerFile
      • db
        • data
        • my.cnf
      • phpmyadmin ←追加
        • sessions ←追加
    • docker-compose.yml
    • index.html
    • info.php
    • connect.php

コンテナを起動後、localhost:3000にアクセスするとphpmyadminの管理画面が表示されることを確認できます。

環境構築の最中はデータベースの設定情報などを初期化したいため、mysqlのコンテナを再起動するときは以下のコマンドで永続化したフォルダを削除してから起動するようにします。

$ sudo rm -rf docker/db/data

また、コンテナを起動直後にデータベースにアクセスすると以下のエラーになることがあります。

SQLSTATE[HY000] [2002] Connection refused

エラーが表示された場合は少し(30秒ほど)待ってから再度確認してみてください。


関連記事