【MySQL】DockerでMySQLの環境を構築してみる
~簡単な自己紹介~
- 嫁と猫3匹と暮らすフルリモートの三十路SE
- 投資・節約・副業で資産形成中
- 現在の金融資産は約1,750万円、めざせアッパーマス層(資産3,000万円)
好き放題いじって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というデータベースが作成されていたら成功です。
以上になります。
お疲れさまでした。