Dockerのコンテナを作成するときはDocker Composeを使います。
Docker Composeは、複数のDockerコンテナを一括して定義・管理・実行するためのツールです。
Composeを使用すると、アプリケーションのサービス(Webサーバー、データベース、キャッシュ、メッセージブローカーなど)を個別のコンテナとして定義し、それらをまとめて一つの環境として扱うことができます。
MYSQLとphpMyAdminのcompose.yaml
services:
mysql:
image: mysql:8.0 # イメージの名前
volumes:
- db-data:/var/lib/mysql #初期データをマウントする場所
environment:
MYSQL_ROOT_PASSWORD: rootpass #コンテナ内のMySQLを起動する際のパスワードを設定
MYSQL_DATABASE: purchasing_management
MYSQL_USER: testuser
MYSQL_PASSWORD: testpass
TZ: 'Asia/Tokyo'
ports:
- "3306:3306"
phpmyadmin:
image: phpmyadmin:5.2
depends_on:
- mysql
environment:
PMA_HOST: mysql
PMA_USER: root
PMA_PASSWORD: rootpass
ports:
- "8080:80"
volumes:
- phpmyadmin-data:/sessions
volumes:
db-data:
phpmyadmin-data:
YAMLの解説
MYSQLの部分
- image: mysql:8.0
- 使用するMySQLのイメージを指定します。ここではバージョン8.0を使用しています。
- volumes:
- db-data:/var/lib/mysql
- MySQLのデータを永続化するために、ホストのボリュームをコンテナの/var/lib/mysqlにマウントします。これにより、コンテナを再起動してもデータが保持されます。
- db-data:/var/lib/mysql
- environment:環境変数の設定。
- MYSQL_ROOT_PASSWORD: MySQLのルートユーザーのパスワードを設定します。
- MYSQL_DATABASE: 起動時に作成するデータベースの名前を指定します。
- MYSQL_USER: 作成するユーザー名を指定します。
- MYSQL_PASSWORD: 作成するユーザーのパスワードを指定します。
- TZ: タイムゾーンをAsia/Tokyoに設定します。
- ports:3306:3306: ホストのポート3306をコンテナのポート3306にマッピングします。これにより、ホストからMySQLに接続できます。
phpmyadminの部分
- image: phpmyadmin:5.2
- 使用するphpMyAdminのイメージを指定します。ここではバージョン5.2を使用しています。
- depends_on:
- mysql
- phpMyAdminコンテナはMySQLコンテナに依存しており、MySQLが起動してからphpMyAdminが起動します。
- mysql
- environment:環境変数の設定。
- PMA_HOST: 接続するMySQLホストを指定します。ここではサービス名mysqlを指定しています。
- PMA_USER: phpMyAdminで接続するユーザー名を指定します。ここではルートユーザーを指定しています。
- PMA_PASSWORD: phpMyAdminで接続するユーザーのパスワードを指定します。
- ports:ホストとコンテナ間のポートのマッピング。
- 8080:80: ホストのポート8080をコンテナのポート80にマッピングします。これにより、ホストからhttp://localhost:8080でphpMyAdminにアクセスできます。
- volumes:
- phpmyadmin-data:/sessions
- phpMyAdminのセッションデータを永続化するためのボリュームを指定します。
- phpmyadmin-data:/sessions
volumesの部分
- db-data:
- MySQLデータベースのデータを永続化するためのボリューム。
- phpmyadmin-data:
- phpMyAdminのセッションデータを永続化するためのボリューム。
このcompose.yamlファイルは、MySQLデータベースとphpMyAdmin管理ツールのセットアップを簡単にするための設定ファイルです。データベースの永続化、サービス間の依存関係、ポートのマッピング、環境変数の設定などが含まれています。これにより、開発環境やテスト環境でのセットアップが非常に簡単になります。
Docker Desktopでコンテナを作成
Docker Desktopでコンテナを作成するにはDocker Desktopを起動しておきます。
その次にPowerShellを起動し、compose.yamlファイルを保存したフォルダに移動します。
例:「C:\MyProgram\22_Docker\mysql」にcompose.yamlがある場合は下のように「cd」コマンドを使てフォルダを移動させます。
cd C:\MyProgram\22_Docker\mysql
次に「docker compose up -d」と入力します。下の画像を参考にしてください。入力が完了したらエンターを押します。

コンテナが作成されていきます。暫くすると完了します。完了後はPowerShellを閉じても問題ありません。

Docker Desktopに戻るとContainersの中に先ほど作成したMysqlが表示されます。Actionの項目で「start」と「stop」がクリックで操作可能になります。

1.PhpMyAdminを起動する。
次に矢印の>をクリックし、その中のphpmyadminのポートの部分をクリックするとphpmyadminが立ち上がります。

このようにphpmyadminの画面になります。

2.sampleのテーブルデータをインポート
以下のファイルをダウンロードしてzipファイルを解凍します。解凍すると「products_sample.sql」のファイルが1個あります。
yamlで設定したMySQLのデータベースをクリックし、その中のInportをクリックします。

ファイルの選択をクリックして先ほどの「products_sample.sql」ファイルを選択します。そしてページの一番下のImportをクリックします。

このような感じでテーブルが作成されました。

以上でDocker Desktopでコンテナを作成後の実行方法とテーブル作成になります。