このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Docker超入門:Docker ComposeでphpMyAdmin+MySQLコンテナを構築する方法

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

phpMyAdmin(ピーエイチピー・マイアドミン) は、Webブラウザ上でMySQLデータベースを管理できるツールです。
PHPで開発されており、コマンドを覚えなくてもデータベース操作ができるのが大きな特徴です。
| 項目 | 内容 |
|---|---|
| 開発言語 | PHP |
| 主な機能 | データベース作成、テーブル操作、SQL実行、ユーザー管理 |
| 利用環境 | Webブラウザ上で動作 |
| 対応DB | MySQL, 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/ |

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

ここでは、phpMyAdmin(管理ツール) と MySQL(データベース本体) を連携させて動作させます。
それぞれ独立したコンテナとして動作しますが、Docker Composeを使うことで自動的に接続できます。
| コンテナ名 | 役割 | 永続化ボリューム |
|---|---|---|
| mysql_container | MySQLデータベース | db-data(/var/lib/mysql) |
| phpmyadmin_container | Webブラウザ管理ツール | 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_PASSWORD | rootユーザーのパスワード |
| MYSQL_DATABASE | 自動的に作成されるDB名 |
| MYSQL_USER | 作成されるユーザー名 |
| MYSQL_PASSWORD | ユーザーのパスワード |
| volumes | MySQLデータを永続化(db-data:/var/lib/mysql) |
phpMyAdminサービス設定
| 項目 | 説明 |
|---|---|
| image | phpMyAdminのイメージ(phpmyadmin:5.2) |
| container_name | コンテナ名(phpmyadmin_container) |
| depends_on | MySQLコンテナが起動してからphpMyAdminを起動 |
| environment | 接続設定(MySQLコンテナのホスト名やユーザー情報) |
| PMA_HOST | 接続先データベース(mysql) |
| PMA_USER | データベースユーザー(test-user) |
| PMA_PASSWORD | データベースパスワード(test-pass) |
| ports | ホストの80番ポートを公開(http://localhostでアクセス) |
| volumes | phpMyAdminのセッション情報を永続化(phpmyadmin-data:/sessions) |
🚀 コンテナの作成と実行
設定が完了したら、次のコマンドでコンテナを起動します。
docker compose up -d| オプション | 説明 |
|---|---|
| up | compose.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://localhostphpMyAdminの画面が表示されます。

上の赤枠からMySQLコンテナに接続していることが確認できます。
ここでは、MySQLデータベースの操作は行いませんが、GUIでデータベースの操作ができます。
🔍 動作確認
現在起動しているコンテナを確認します。
docker container ls| CONTAINER ID | IMAGE | PORTS | NAMES |
|---|---|---|---|
| aedc9ae743af | phpmyadmin:5.2 | 0.0.0.0:80->80/tcp | phpmyadmin_container |
| 361c53800f10 | mysql:8.0 | 3306/tcp, 33060/tcp | mysql_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で操作できるので、データベース初心者にもおすすめです✨
