Dockerコンテナ作成 MySQL

投稿日: 2024年7月6日

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にマウントします。これにより、コンテナを再起動してもデータが保持されます。
  • 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が起動します。
  • 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のセッションデータを永続化するためのボリュームを指定します。
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でコンテナを作成後の実行方法とテーブル作成になります。

記事