このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Docker超入門:Docker ComposeでphpMyAdmin+MySQLコンテナを構築する方法

🐳 Docker ComposeでphpMyAdmin+MySQLコンテナを構築する方法

 この記事では、Docker Compose を使って phpMyAdmin+MySQL コンテナを構築する方法を紹介します。
 GUI操作でデータベースを扱えるようになるので、CLI(コマンドライン操作)が苦手な方にもぴったりです!

💡 phpMyAdminとは?

 phpMyAdmin(ピーエイチピー・マイアドミン) は、Webブラウザ上でMySQLデータベースを管理できるツールです。
PHPで開発されており、コマンドを覚えなくてもデータベース操作ができるのが大きな特徴です。

項目内容
開発言語PHP
主な機能データベース作成、テーブル操作、SQL実行、ユーザー管理
利用環境Webブラウザ上で動作
対応DBMySQL, MariaDB
公式サイトhttps://www.phpmyadmin.net/

URL:https://www.phpmyadmin.net/

💬 ポイント
MySQLのコマンドラインで行う操作をGUIで直感的に行えるため、初心者にも使いやすいツールです。

🛠️ MySQLとは?

 MySQL(マイエスキューエル) は、世界中で最も広く使われているオープンソースのデータベース管理システムです。
1995年に登場し、現在は Oracle Corporation が開発・提供しています。
WebアプリやECサイト、CMS(WordPressなど)でもおなじみのデータベースです。

項目内容
開発元Oracle Corporation
初版リリース1995年
特徴高速・安定・拡張性が高い
主な用途Webサービス、アプリケーション、業務システムなど
公式サイトhttps://www.mysql.com/jp/

URL:https://www.mysql.com/jp/

💬 ポイント
 MySQLは「クライアント/サーバー型」の仕組みを採用しており、アプリケーション(クライアント)からデータベースサーバーに接続してデータを読み書きします。

🧱 phpMyAdmin+MySQL構成の概要

 ここでは、phpMyAdmin(管理ツール)MySQL(データベース本体) を連携させて動作させます。
 それぞれ独立したコンテナとして動作しますが、Docker Composeを使うことで自動的に接続できます。

コンテナ名役割永続化ボリューム
mysql_containerMySQLデータベースdb-data(/var/lib/mysql)
phpmyadmin_containerWebブラウザ管理ツールphpmyadmin-data(/sessions)

💬 ポイント
MySQLのデータは db-data に保存されるため、コンテナを削除してもデータは残ります。
phpMyAdminのセッション情報も phpmyadmin-data に保存され、再起動時に引き継がれます。

🧹 作業前のクリーンアップ

まず、古いDockerコンテナや不要なイメージを削除して環境を整理します。

コマンド書式

docker system prune -a --volumes
オプション説明
-a未使用のイメージを含めて削除
--volumes使用していないボリュームも削除(必要に応じて)

実行結果

PS C:\Users\joeac> docker system prune -a --volumes
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all anonymous volumes not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N] y

💬 補足
実行後に「Are you sure you want to continue? [y/N]」と出たら y を入力しましょう。
Docker Desktopを使う場合は、GUIから削除してもOKです。

📁 compose.yamlの作成

次に、Composeの設定ファイル「compose.yaml」を作成します。
このファイルに2つのサービス(MySQLとphpMyAdmin)を定義します。

1.作業ディレクトリの作成

cd desktop/docker
mkdir phpadmysql
cd phpadmysql

実行結果

PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker> mkdir phpadmysql

    Directory: C:\Users\joeac\Desktop\docker

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2025/10/15    22:42                phpadmysql

PS C:\Users\joeac\Desktop\docker> cd phpadmysql
PS C:\Users\joeac\Desktop\docker\phpadmysql>

2.VS Codeを起動

code compose.yaml

🧾 compose.yamlの内容

以下の内容をVS Codeに入力して保存します👇

services:
  mysql:
    image: mysql:8.0
    container_name: mysql_container
    environment:
      MYSQL_ROOT_PASSWORD: root-pass
      MYSQL_DATABASE: test-db
      MYSQL_USER: test-user
      MYSQL_PASSWORD: test-pass
    volumes:
      - db-data:/var/lib/mysql

  phpmyadmin:
    image: phpmyadmin:5.2
    container_name: phpmyadmin_container
    depends_on:
      - mysql
    environment:
      PMA_HOST: mysql
      PMA_USER: test-user
      PMA_PASSWORD: test-pass
    ports:
      - "80:80"
    volumes:
      - phpmyadmin-data:/sessions

volumes:
  db-data:
  phpmyadmin-data:

⚙️ 設定内容の詳細解説

MySQLサービス設定

項目説明
image使用するDockerイメージ(mysql:8.0)
container_nameコンテナ名(mysql_container)
environment環境変数を指定し、DB初期設定を自動化
MYSQL_ROOT_PASSWORDrootユーザーのパスワード
MYSQL_DATABASE自動的に作成されるDB名
MYSQL_USER作成されるユーザー名
MYSQL_PASSWORDユーザーのパスワード
volumesMySQLデータを永続化(db-data:/var/lib/mysql)

phpMyAdminサービス設定

項目説明
imagephpMyAdminのイメージ(phpmyadmin:5.2)
container_nameコンテナ名(phpmyadmin_container)
depends_onMySQLコンテナが起動してからphpMyAdminを起動
environment接続設定(MySQLコンテナのホスト名やユーザー情報)
PMA_HOST接続先データベース(mysql)
PMA_USERデータベースユーザー(test-user)
PMA_PASSWORDデータベースパスワード(test-pass)
portsホストの80番ポートを公開(http://localhostでアクセス)
volumesphpMyAdminのセッション情報を永続化(phpmyadmin-data:/sessions)

🚀 コンテナの作成と実行

設定が完了したら、次のコマンドでコンテナを起動します。

docker compose up -d
オプション説明
upcompose.yamlに基づいてコンテナを起動
-dバックグラウンド実行(detachedモード)

実行結果

PS C:\Users\joeac\Desktop\docker\phpadmysql> docker compose up -d
[+] Running 34/34
 ✔ mysql Pulled                                                                 16.6s
 ✔ phpmyadmin Pulled                                                            17.6s
[+] Running 5/5
 ✔ Network phpadmysql_default         Created                                    0.1s
 ✔ Volume phpadmysql_phpmyadmin-data  Cre...                                     0.0s
 ✔ Volume phpadmysql_db-data          Created                                    0.0s
 ✔ Container mysql_container          Started                                    3.1s
 ✔ Container phpmyadmin_container     Starte...                                  0.8s
PS C:\Users\joeac\Desktop\docker\phpadmysql>

💬 ポイント
MySQL → phpMyAdmin の順に自動で起動します。
内部ネットワークが自動生成されるため、ホスト指定(PMA_HOST)はサービス名「mysql」でOKです。

🌍 phpMyAdminへアクセス

起動が完了したら、Webブラウザを開き次のURLにアクセスします。

http://localhost

phpMyAdminの画面が表示されます。

上の赤枠からMySQLコンテナに接続していることが確認できます。
ここでは、MySQLデータベースの操作は行いませんが、GUIでデータベースの操作ができます。

🔍 動作確認

現在起動しているコンテナを確認します。

docker container ls
CONTAINER IDIMAGEPORTSNAMES
aedc9ae743afphpmyadmin:5.20.0.0.0:80->80/tcpphpmyadmin_container
361c53800f10mysql:8.03306/tcp, 33060/tcpmysql_container

実行結果

PS C:\Users\joeac\Desktop\docker\phpadmysql> docker container ls
CONTAINER ID   IMAGE            COMMAND                   CREATED         STATUS         PORTS                                 NAMES
aedc9ae743af   phpmyadmin:5.2   "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes   0.0.0.0:80->80/tcp, [::]:80->80/tcp   phpmyadmin_container
361c53800f10   mysql:8.0        "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   3306/tcp, 33060/tcp                   mysql_container

💬 補足
MySQLは内部ネットワーク上で3306ポートを使用しています。
外部に公開されていないためセキュリティ面でも安心です。

🧠 まとめ

Docker Composeを使えば、phpMyAdmin+MySQLの連携環境が数分で構築できます。
Web開発やDB学習の環境としても最適です!

ステップ内容
1️⃣不要なDockerオブジェクトを削除(docker system prune -a)
2️⃣compose.yamlファイルを作成
3️⃣docker compose up -d でコンテナ起動
4️⃣http://localhost にアクセスしてGUI管理
5️⃣docker container ls で状態を確認

💬 ひとことまとめ

Docker Composeを使えば、MySQLとphpMyAdminの連携環境があっという間!
GUIで操作できるので、データベース初心者にもおすすめです✨