このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】phpMyAdminとMariaDBコンテナ
ここでは、Docker Composeコマンドを使ったphpMyAdminとMariaDBコンテナの構築例を紹介します。
phpMyAdminとは
まず、はじめに phpMyAdminについて説明しておきます。
phpMyAdminは、ウェブベースのMySQLデータベース管理ツールであり、PHPで書かれています。このツールを使用することで、ユーザーはブラウザを介してMySQLデータベースを直感的に管理することができます。MariaDBも操作することができます。
MariaDB単体での操作では、通常はコマンドラインインターフェース(CLI)を使用してデータベースの管理を行います。CLIを使用することで、テキストベースドのコマンドを使ってデータベースやテーブルの作成、クエリの実行、ユーザーアカウントの管理などを行います。これにより、データベース管理者やシステム管理者は、ターミナルやコマンドプロンプトを介して直接データベースを操作することができます。ただし、CLIを使用する場合は、コマンドの構文を正確に覚えておく必要があります。
一方、phpMyAdminを使用すると、ウェブブラウザを介してGUI(グラフィカルユーザーインターフェース)を通じてデータベースを操作することができます。これにより、ユーザーは直感的なインターフェースを通じてデータベースの操作を行うことができます。テーブルの作成、データの表示、クエリの実行、ユーザーアカウントの管理などの機能が、マウスクリックやドラッグ&ドロップなどの操作で容易に行えます。phpMyAdminは、非常に使いやすいツールであり、特に技術的な知識がないユーザーにとっては便利です。
URL:https://www.phpmyadmin.net/
MariaDBとは
MariaDBは、オープンソースのリレーショナルデータベース管理システムであり、MySQLのフォークから派生しています。MySQLの元々の開発者がMySQLのオープンソースコミュニティとの不和から派生させたものです。MariaDBはMySQLと互換性があり、MySQLからの移行が比較的容易です。
MariaDBは高いパフォーマンスと安定性を提供し、大規模なウェブアプリケーションや企業のデータベースシステムで広く利用されています。また、拡張性やセキュリティにも焦点を当てており、クラスタリングやレプリケーションなどの高度な機能を提供しています。MariaDBのコミュニティやエコシステムも活発であり、さまざまなプラグインやツールが利用可能です。
phpMyAdminとMariaDBコンテナの構成
以下のようにphpMyAdminとMariaDBコンテナを構成します。
MariaDBのデータは「db-data」という永続的なボリュームに保存し、phpMyAdminのセッションデータは「phpmyadmin-data」という永続的なボリュームに保存する構成です。
phpMyAdminとMariaDBコンテナの作成
「compose.yaml」を作成して、phpMyAdminとMariaDBコンテナを作成します。
不要なDockerオブジェクトの削除
まず、不要なDockerオブジェクトをすべて削除しておきます。
以下のコマンドを実行します。
・「docker system prune -a」コマンドを実行します。
Are you sure you want to continue? [y/N] の質問には「y」と入力します。
PS C:\Users\joeac> docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks 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
Deleted Containers:
(略)
・「docker system prune -a」コマンドで削除されなかったDockerオブジェクトは、個別に削除しておきます。
環境によって削除されずに残っているDockerオブジェクトは異なります。
compose.yaml の作成
ディレクトリの作成と移動
Docker Composeでコンテナを作成するには、「compose.yaml」ファイルが必要になります。
デフォルトでは、カレントディレクトリにある「compose.yaml」ファイルが読み込まれるため、作業ディレクトリに移動しておきます。
・「cd desktop/docker」コマンドを実行します。
PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker>
「compose.yaml」ファイルを保存する「phpadmaria」ディレクトリを作成して、作成したディレクトリに移動します。次のコマンドを実行します。
- 「mkdir phpadmaria」コマンド
- 「cd phpadmaria」コマンド
PS C:\Users\joeac\Desktop\docker> mkdir phpadmaria
Directory: C:\Users\joeac\Desktop\docker
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2024/04/16 0:23 phpadmaria
PS C:\Users\joeac\Desktop\docker> cd phpadmaria
PS C:\Users\joeac\Desktop\docker\phpadmaria>
VSCodeの起動
VSCodeで「compose.yaml」ファイルを作成します。
・「code compose.yaml」コマンドを実行します。
PS C:\Users\joeac\Desktop\docker\phpadmaria> code compose.yaml
VSCodeが起動します。
「compose.yaml」ファイルの編集
・「compose.yaml」ファイルを以下のように編集して保存します。
services:
mariadb:
image: mariadb:10.8
container_name: mariadb_container
environment:
MARIADB_ROOT_PASSWORD: root-pass
MARIADB_DATABASE: test-db
MARIADB_USER: test-user
MARIADB_PASSWORD: test-pass
volumes:
- db-data:/var/lib/mysql
phpmyadmin:
image: phpmyadmin:5.2
container_name: phpmyadmin_container
depends_on:
- mariadb
environment:
PMA_HOST: mariadb
PMA_USER: test-user
PMA_PASSWORD: test-pass
ports:
- "80:80"
volumes:
- phpmyadmin-data:/sessions
volumes:
db-data:
phpmyadmin-data:
定義内容の解説
「compose.yaml」ファイルの定義を解説します。
項目 | 説明 |
---|---|
services | コンテナ化されるサービスを定義するセクション。 |
mariadb | MariaDBサービスの定義。 |
image | 使用するDockerイメージを指定。 |
container_name | コンテナの名前を指定。 |
environment | 環境変数を設定するセクション。 |
MARIADB_ROOT_PASSWORD | MariaDBのルートユーザーのパスワードを指定。 |
MARIADB_DATABASE | MariaDBに作成されるデータベースの名前を指定。 |
MARIADB_USER | MariaDBに作成されるデータベースユーザーの名前を指定。 |
MARIADB_PASSWORD | MariaDBに作成されるデータベースユーザーのパスワードを指定。 |
volumes | ボリュームの定義。 |
db-data | MariaDBコンテナ内のデータを永続化するためのボリュームを指定。 |
項目 | 説明 |
---|---|
phpmyadmin | phpMyAdminサービスの定義。 |
depends_on | 依存関係を指定。指定されたサービスが起動してからこのサービスが開始される。 |
PMA_HOST | phpMyAdminが接続するデータベースのホストを指定。 |
PMA_USER | phpMyAdminが使用するデータベースのユーザー名を指定。 |
PMA_PASSWORD | phpMyAdminが使用するデータベースのパスワードを指定。 |
ports | ポートのマッピングを指定。 |
volumes | ボリュームの定義。 |
phpmyadmin-data | phpMyAdminコンテナ内のセッションデータを永続化するためのボリュームを指定。 |
項目 | 説明 |
---|---|
volumes | ボリュームの定義セクション。 |
db-data | MariaDBコンテナ内のデータを永続化するためのボリュームを定義。 |
phpmyadmin-data | phpMyAdminコンテナ内のセッションデータを永続化するためのボリュームを定義。 |
この compose.yamlファイルでは、MariaDBとphpMyAdminの2つのサービスを定義しています。MariaDBサービスはMariaDBデータベースを提供し、phpMyAdminサービスはWebベースの管理ツールとして動作します。また、MariaDBのデータは「db-data」という永続的なボリュームに保存され、phpMyAdminのセッションデータは「phpmyadmin-data」という永続的なボリュームに保存されます。
コンテナの作成と実行
「docker compose up -d」コマンドを実行します。
このコマンドは、「compose.yaml」ファイルを配置した場所で実行する必要があります。
C:\Users\joeac\Desktop\docker\nginx1> docker compose up -d
[+] Running 8/8
✔ nginx 7 layers [⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 6.4s
✔ 13808c22b207 Already exists 0.0s
✔ 6fcdffcd79f0 Pull complete 2.0s
✔ fbf231d461b3 Pull complete 0.7s
✔ c9590dd9c988 Pull complete 0.9s
✔ b4033143d859 Pull complete 1.6s
✔ abaefc5fcbde Pull complete 1.6s
✔ bcef83155b8b Pull complete 2.3s
[+] Running 1/2
- Network nginx1_default Crea... 0.5s
✔ Container nginx_container S... 0.5s
phpMyAdminコンテナへの接続
・Webブラウザを起動して、URLに「localhost」と入力します。
phpMyAdminのページが表示されます。
ここでは、MariaDBの操作は行いませんが、GUIでデータベースの操作ができます。
・「docker container ls」コマンドを実行します。
各コンテナが使用しているポート番号などが確認できます。
PS C:\Users\joeac\Desktop\docker\phpadmaria> docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
12fcdedbbfea phpmyadmin:5.2 "/docker-entrypoint.…" 6 minutes ago Up 6 minutes 0.0.0.0:80->80/tcp phpmyadmin_container
4c07167bf15e mariadb:10.8 "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 3306/tcp mariadb_container