Dockerを使用してMySQL 8.0環境を構築する
この記事では、Dockerを使用してMySQL 8.0環境を構築する手順を説明します。MySQLはもっとも人気のあるオープンソースのリレーショナルデータベース管理システムの一つです。Dockerを利用することで、ホストOSに手動でMySQLサーバーをインストールし、設定する手続きを経ずに、開発やテスト目的のために素早くMySQLサーバーをセットアップすることができます。
docker-compose.ymlの設定
まず、MySQLサーバーコンテナを作成するために、docker-compose.yml
ファイルを作成します。このファイルには、Docker HubからMySQLイメージを取得し、新しいMySQLコンテナを作成し、必要な環境変数を設定するための必要な構成が含まれます。
以下は、docker-compose.yml
ファイルの内容です。
version: '3.9'
services:
mysql:
image: mysql:8.0.28
platform: linux/amd64
container_name: mysql-container
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: demo
TZ: 'Asia/Tokyo'
MySQLコンテナの起動
docker-compose.yml
ファイルの設定が完了したら、MySQLサーバーコンテナを起動することができます。Docker Composeを使用すると、わずかなコマンドでアプリケーションのサービスを管理できます。ターミナルで、docker-compose.yml
ファイルがあるディレクトリに移動し、次のコマンドを実行します。
$ docker compose up -d
MySQLサーバーコンテナが起動していることを確認するために、docker ps
コマンドを使用できます。このコマンドは実行中のDockerコンテナを一覧表示します。以下は、コマンドと出力です。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
baf6d46af198 mysql:8.0.28 "docker-entrypoint.s…" 26 seconds ago Up 24 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql-container
MySQLコンテナが実行されていることを確認した後、docker exec
コマンドを使用してMySQLコンテナのシェルにアクセスすることができます。
$ docker exec -it mysql-container
root@baf6d46af198:/#
MySQLコンテナ内に入ったので、MySQLクライアントCLIを使用してMySQLサーバーに接続することができます。rootユーザーとして接続するには、次のコマンドを使用します。
root@baf6d46af198:/# mysql -u root -p
Enter password: root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.28 MySQL Community Server - GPL
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
MySQLの操作
MySQLサーバーに接続したら、show databases;
コマンドを使用して利用可能なデータベースを確認できます。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| demo |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.11 sec)
demo
データベースで操作を行うためには、まずuse
コマンドを使用して選択する必要があります。
mysql> use demo
Database changed
現在選択されているデータベースを確認するには、select database();
コマンドを使用できます。
mysql> select database();
+------------+
| database() |
+------------+
| demo |
+------------+
1 row in set (0.00 sec)
demo
データベースが選択されている状態で、テーブルの作成、データの挿入、データのクエリなど、さまざまなデータベース操作を行うことができます。以下は、テーブルの作成、データの挿入、およびデータの取得の例です。
mysql> create table test(id int, name varchar(10));
Query OK, 0 rows affected (0.13 sec)
mysql> insert into test(id, name) values (1,"john");
Query OK, 1 row affected (0.10 sec)
mysql> select * from test;
+------+--------+
| id | name |
+------+--------+
| 1 | john |
+------+--------+
1 row in set (0.04 sec)
クリーンアップ
操作が終了したら、MySQL接続を終了します。
mysql> exit
Bye
このコマンドでMySQLサーバーからログアウトされます。
MySQL接続を終了した後、Dockerコンテナのシェルに戻ります。Dockerコンテナからも退出することができます。
root@baf6d46af198:/# exit
exit
不要なリソースを消費しないようにするために、使用が終わったらDockerコンテナを停止し、削除した方が良いです。次のコマンドを使用してDockerコンテナを停止し、削除します。
$ docker compose down
[+] Running 2/2
⠿ Container mysql-container Removed 2.8s
⠿ Network my_proj_default Removed