MySQLコンテナを、docker-composeで動かすメモとなります。
以前にも同じようなメモをしていると思いますが、
MySQLは何かと利用機会が多いため、MySQLだけの内容で残しておきたいと思います。
環境
- macOS:Big Sur 11.5.2
- Docker:20.10.12
- Docker Desktop:4.5.0 (74594)
- docker-compose:1.29.2, build 5becea4c
設定ファイル用意
・Dockerfile
MySQLのバージョンは、docker hubにて確認して指定します。
https://hub.docker.com/_/mysql
FROM mysql:5.7.41-debian
COPY ./my.cnf /etc/mysql/conf.d/
RUN apt-get update
RUN apt-get install -y locales
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/*
RUN sed -i -E 's/# (ja_JP.UTF-8)/\1/' /etc/locale.gen && locale-gen
ENV LANG ja_JP.UTF-8
CMD ["mysqld", "--character-set-server=utf8", "--collation-server=utf8_unicode_ci"]
・my.cnf
[mysqld]
character-set-server=utf8
https://dev.mysql.com/doc/refman/5.7/en/option-files.html
・docker-compose.yaml
version: "3.6"
services:
mysql:
build:
context: ./mysql
# MySQL用Dockerfileの配置パス
dockerfile: .
ports:
- 3306:3306
volumes:
# データ永続化 MySQLの内容を./dataディレクトリに保持します。
- ./data:/var/lib/mysql
environment:
MYSQL_ROOT_USER: root
# Rootユーザーを、パスワードなしでMySQLへのログインを許可します。
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
# MySQLのRootユーザーのパスワードを設定する場合は、
# MYSQL_ALLOW_EMPTY_PASSWORDをコメントアウトし、MYSQL_ROOT_PASSWORDでパスワードを指定します。
# MYSQL_ROOT_PASSWORD: root
# Database名称の指定
MYSQL_DATABASE: test_db
# 作業用MySQLユーザー名称の指定
MYSQL_USER: test_db_docker
# 作業用MySQLユーザーパスワードの指定
MYSQL_PASSWORD: test_db_docker_pass
docker-compose 起動・終了
まず、dockerが実行可能な状態であることを確認します。
・コンテナ・ビルド・起動
docker-compose up -d --build
・接続確認
試しにMySQL Workbenchで接続してみようと思います。
https://www.mysql.com/jp/products/workbench/
用意した設定ファイルの内容ですと、以下の内容で接続できると思います。
試しにTest Connectionボタンで接続テストを行い、
Successfullyと出れば問題ありません。
何もSQLを実行していないのでテーブルは存在しませんが、
docker-compose.yamlで指定したデータベースは存在します。
ユーザーもrootやdocker-compose.yamlで指定したユーザーのみ存在していました。
・コンテナ・終了
docker-compose down -v
以上となります。
MySQLのコンテナだけの起動ですので、docker-composeを利用しなくてもよかったのですが、
他のコンテナと一緒に利用したくなった時にdocker-composeを使うと思いますので、
docker-composeを利用してみました。