【MySQL】DockerでMySQLの環境構築をする
この記事では、Dockerを使用してMySQLデータベースの環境を構築する具体的な手順を学びます。`docker-compose.yml`ファイルでの設定方法から、コマンドを使ったコンテナの起動、データベースGUIツールでの接続確認、さらにコンテナの停止・再開方法まで、システムエンジニアを目指す初心者が実践的にデータベース環境を整える方法を解説します。
開発環境
- Visual Studio Code:version 1.73.0
- OS:Windows10
- Docker Engine:v23.0.5
- DatabaseGUI: TablePlus
DockerでMySQLの環境構築をする手順
このセクションでは、Dockerを使用してMySQLの環境を構築する手順について解説していきます。システムエンジニアにとって、開発環境を効率的に整えることは非常に重要です。Dockerを使うことで、お使いのPCに直接ソフトウェアをインストールすることなく、簡単にMySQLのデータベース環境を構築し、すぐに使い始めることができます。
ディレクトリ構成
まず、今回の環境構築で使用するディレクトリ(フォルダ)の構成から見ていきましょう。最終的には下記のような構成を目指します。
1docker-mysql/ 2└── docker-compose.yml # Docker Composeファイル
docker-mysqlという名前の新しいフォルダを作成し、その中にdocker-compose.ymlというファイルを一つだけ配置します。このdocker-compose.ymlファイルが、DockerでMySQLを動かすための設定を記述する中心となります。
docker-compose.ymlを作成
次に、先ほど作成したdocker-mysqlディレクトリの直下にdocker-compose.ymlという名前のファイルを作成し、以下の内容を記述してください。
1# docker-compose.yml 2version: '3.8' 3 4services: 5 database: 6 image: mysql:8.0 7 container_name: mysql_tutorial 8 environment: 9 MYSQL_ROOT_PASSWORD: root 10 MYSQL_DATABASE: tutorial_db 11 MYSQL_USER: tutorial_user 12 MYSQL_PASSWORD: tutorial_pass 13 ports: 14 - "3306:3306"
このdocker-compose.ymlファイルは、複数のDockerコンテナ(独立した実行環境)をまとめて管理するための設定を記述するファイルです。YAMLという形式で記述されており、インデント(字下げ)が非常に重要です。
version: '3.8':Docker Composeファイルのバージョンを指定しています。services:起動するコンテナの定義をここで行います。database:このセクションでは、databaseという名前でMySQLのサービス(コンテナ)を定義しています。この名前は任意で変更できますが、ここではdatabaseとします。image: mysql:8.0:使用するDockerイメージを指定しています。ここでは、MySQLの公式イメージのバージョン8.0を使用することを意味します。Dockerイメージとは、コンテナを動かすために必要なプログラムや設定がまとまったテンプレートのようなものです。container_name: mysql_tutorial:起動するコンテナにmysql_tutorialという具体的な名前を付けています。これにより、後でコンテナを識別しやすくなります。environment:コンテナ内で使用する環境変数を設定しています。MySQLの初期設定に必要な情報を、ここにまとめて指定します。
| 環境変数 | 設定値 | 内容 |
|---|---|---|
| MYSQL_ROOT_PASSWORD | root | MySQLのrootユーザー(管理者権限を持つユーザー)のパスワードをrootに設定しています。 |
| MYSQL_DATABASE | tutorial_db | コンテナが起動したときに自動的に作成されるデータベースの名前をtutorial_dbに設定しています。 |
| MYSQL_USER | tutorial_user | tutorial_dbというデータベースにアクセスするための新しいユーザーの名前をtutorial_userに設定しています。 |
| MYSQL_PASSWORD | tutorial_pass | tutorial_userのパスワードをtutorial_passに設定しています。 |
これらの設定により、コンテナの初回起動時にtutorial_dbというデータベースと、それにアクセスできるtutorial_userというユーザーが自動で作成されるため、初期設定の手間を省くことができます。
ports: - "3306:3306":PC側のポートとコンテナ側のポートを紐付けています。これは、「PCの3306番ポートへのアクセスを、コンテナの3306番ポートに転送する」という意味です。MySQLは通常3306番ポートで通信を行うため、PC側も同じ3306番ポートを使用して、PCからコンテナ内のMySQLに接続できるようにしています。
注意点: もしお使いのPCに直接MySQLがインストールされており、それが起動している場合、PCの3306番ポートがすでに使用されている可能性があります。その場合、ポートが重複してコンテナが起動に失敗してしまいます。その際は、PC側のMySQLを停止するか、"3307:3306"のようにPC側のポート番号(左側の数字)を別の番号に変更してください。
Dockerコンテナをビルド
docker-compose.ymlファイルを作成したら、次にDockerコンテナを起動します。初回の起動時には、指定したDockerイメージをもとにコンテナが作成されます。
まずは、作成したdocker-mysqlディレクトリに移動します。ターミナル(コマンドプロンプトやPowerShellなど)で以下のコマンドを実行してください。
1cd docker-mysql
次に、以下のコマンドを実行してコンテナを起動します。
1docker-compose up -d
docker-compose up:docker-compose.ymlの設定に基づいてコンテナを起動するコマンドです。-d:このオプションを付けることで、コンテナをバックグラウンド(ターミナルを閉じても動作し続ける状態)で起動できます。
このコマンドを初めて実行する場合、MySQLのDockerイメージがインターネットからダウンロードされるため、完了までにしばらく時間がかかることがあります。ダウンロードと起動が正常に完了すると、mysql_tutorialコンテナが「Started」(起動済み)と表示されます。
データベースGUIで接続確認
コンテナが正常に起動したことを確認したら、次にデータベースGUIツールを使用して、実際にMySQLに接続できるかを確認します。データベースGUIツールとは、データベースの内容を視覚的に操作できるソフトウェアのことで、データを確認したり、テーブルを作成したりするのに非常に便利です。ここではTablePlusというツールを例に説明します。TablePlusのインストール方法については、別途MySQLの環境構築に関する記事などを参考にしてください。
TablePlusを起動したら、画面上で右クリックし、「New」→「Connection」を選択して「MySQL」を選んでください。 以下の接続情報を入力します。
| 項目 | 入力する内容 | 説明 |
|---|---|---|
| Name | mysql_tutorial(任意の名前) | この接続設定に付ける名前です。分かりやすい名前を付けてください。 |
| Host | 127.0.0.1 | ホスト名またはIPアドレスです。127.0.0.1は「ローカルホスト」、つまりお使いのPC自身を指します。 |
| Port | 3306 | MySQLが待ち受けているポート番号です。先ほどdocker-compose.ymlで設定したPC側のポート番号と同じにします。 |
| User | tutorial_user | データベースに接続するユーザー名です。docker-compose.ymlで設定したMYSQL_USERと同じです。 |
| Password | tutorial_pass | 上記ユーザーのパスワードです。docker-compose.ymlで設定したMYSQL_PASSWORDと同じです。 |
| Database | tutorial_db | 接続するデータベース名です。docker-compose.ymlで設定したMYSQL_DATABASEと同じです。 |
すべての情報を入力したら、「Test」をクリックして接続テストを行ってください。 「connection is OK」と表示されれば、入力した情報が正しく、MySQLデータベースに接続できる状態であることを意味します。「Save」をクリックして接続設定を保存し、一覧に追加された接続をダブルクリックしてデータベースに接続できれば、Dockerを使ったMySQLの環境構築は完了です。
Dockerコンテナの停止と再起動
最後に、Dockerコンテナの停止と再起動の方法を説明します。
MySQLの作業が終わり、コンテナを停止したい場合は、docker-mysqlディレクトリで以下のコマンドを実行します。
1docker-compose down
このコマンドは、起動中のコンテナだけでなく、それに紐づくネットワークも削除(Removed)します。ターミナルに削除されたコンテナとネットワークが表示されます。
もう一度MySQLを使いたい場合は、同じdocker-mysqlディレクトリで以下のコマンドを実行すれば、再度コンテナを起動できます。
1docker-compose up -d
重要: 今回のdocker-compose.ymlでは、データを永続的に保存するための「ボリューム」という設定をしていません。そのため、docker-compose downコマンドでコンテナを削除してしまうと、コンテナ内で作成したテーブルや保存したデータもすべて削除されてしまいます。
もし、データを残したまま一時的にMySQLを止めたい場合は、以下のコマンドを使用してください。
- コンテナを一時停止し、データを保持する場合:
1docker-compose stop - 停止したコンテナを再開する場合:
1docker-compose start
このように、目的によってコマンドを使い分けることで、データを安全に管理しながら開発を進めることができます。
まとめ
この記事では、Dockerとdocker-compose.ymlファイルを用いて、MySQLデータベースの環境を手軽に構築する具体的な方法を学びました。docker-compose up -dコマンドでコンテナを起動し、TablePlusなどのGUIツールで設定したユーザー情報を使ってデータベースに接続する手順を実践しました。また、docker-compose downやdocker-compose stopといったコマンドで、コンテナの停止や再開を適切に行う方法も理解しました。Dockerを活用することで、直接PCにインストールすることなく効率的にデータベース環境を整え、システムエンジニアとしての一歩を踏み出せたことと思います。