【MySQL】DockerでMySQLの環境を構築してみる

~簡単な自己紹介~

  • 嫁と猫3匹と暮らすフルリモートの三十路SE
  • ブリッジSE的なポジションを務めることが多く、チーム運営、顧客折衝、ベンダーコントロールが得意
  • 得意言語はSQL、VBA
  • 管理や経営にも興味があり、資格で言うと行政書士、社労士もこっそり勉強中

好き放題いじってOKなMySQLが欲しかったので、Dockerを使って環境を構築してみました。

当記事はLaravelの環境構築記事の中からMySQLだけを切り出して、少し調整した形になります。

当記事はMySQLが動く環境を作ることが目的の記事になります。

そのため、DockerファイルやYAMLファイルなどの設定値の解説は省略し、手順の一部簡略化を行っています。

アプリケーションの定義ファイル(YAML)を作成する

下記のコマンドを実行し、YAMLファイルを作成します。

type nul > docker-compose.yml

エラーメッセージが表示されますが、YAMLファイルが作成されていれば問題ありません。

下記の内容でYAMLファイルを編集します。

version: "3.9"
services:
  db:
    build: .
    volumes:
      - db-store:/var/lib/mysql
    ports:
      - "3306:3306"

volumes:
  db-store:

Dockerファイルを作成する

下記のコマンドを実行して、Dockerファイルを作成します。

type nul > Dockerfile

エラーメッセージが表示されますが、Dockerファイルが作成されていれば問題ありません。

下記の内容でDockerファイルを編集します。

FROM mysql/mysql-server:8.0

ENV MYSQL_DATABASE=odaneko \
  MYSQL_USER=mysql \
  MYSQL_PASSWORD=mysql \
  MYSQL_ROOT_PASSWORD=mysql \
  TZ=Asia/Tokyo

COPY ./my.cnf /etc/my.cnf
RUN chmod 644 /etc/my.cnf

confファイルを作成する

下記のコマンドを実行して、confファイルを作成します。

type nul > my.cnf

エラーメッセージが表示されますが、confファイルが作成されていれば問題ありません。

下記の内容でconfファイルを編集します。

[mysqld]
# default
skip-host-cache
skip-name-resolve
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
secure-file-priv = /var/lib/mysql-files
user = mysql

pid-file = /var/run/mysqld/mysqld.pid

# character set / collation
character_set_server = utf8mb4
collation_server = utf8mb4_ja_0900_as_cs_ks

# timezone
default-time-zone = SYSTEM
log_timestamps = SYSTEM

# Error Log
log-error = mysql-error.log

# Slow Query Log
slow_query_log = 1
slow_query_log_file = mysql-slow.log
long_query_time = 1.0
log_queries_not_using_indexes = 0

# General Log
general_log = 1
general_log_file = mysql-general.log

[mysql]
default-character-set = utf8mb4

[client]
default-character-set = utf8mb4

コンテナをビルド・立ち上げ

下記のコマンドを実行して、コンテナをビルド・立ち上げます。

docker compose up -d --build

コンテナがStartedになっていればOKです。

Dockerの画面でコンテナがRunningになっていることも確認します。

環境が構築できたか確認する

DBコンテナに入る

下記のコマンドを実行して、DBコンテナに入ります。

docker compose exec db bash

MySQLクライアントを起動する

MySQLクライアントを起動します。

簡単に言うとDBをコンソールで操作できる状態を作ります。

コマンドの-uの後にはログインするユーザーを指定するのですが、ここはDockerfileに記載したユーザーを使います。

mysql -umysql -p

上記のコマンドを実行するとパスワードを要求されるので、Dockerfileに記載したパスワードを入力します。

この手順書ではユーザーもパスワードも「mysql」です。

成功すると、コンソールが「mysql」で始まるようになります。

データベースを確認する

下記のコマンドを実行して、Dockerfileに記載したデータベースが存在するか確認します。

show databases;

odanekoというデータベースが作成されていたら成功です。

以上になります。

お疲れさまでした。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です