手順が1つにまとまったサイトがなかったので記事にする。
前提
Dockerで書籍学習以外のコンテナを作るのは初めての超初心者が書いています。
ホスト環境
- Windows11
- Docker version 20.10.17, build 100c701
作りたいMySQL環境
- mysql5.7
手順
- MySQLコンテナ用のフォルダを作成し、移動しておく
my.cnfの作成。作成したファイルは読み取り専用にしておく。
[mysql] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_bin [client] default-character-set=utf8mb4
dockerfileの作成
FROM mysql:5.7 # my.cnfをコンテナにコピー COPY my.cnf /etc/mysql/conf.d/my.cnf # MySQLで日本語が使用できるようにするための設定 RUN yum update -y && yum reinstall -y glibc-common ENV LC_ALL ja_JP.UTF-8 ENV TZ Asia/Tokyo ENV LANG=ja_JP.UTF-8 CMD ["mysqld"] EXPOSE 3306
docker-compose.ymlを作成
version: '3' services: mysql: build: ./ image: mysql_tatsu ports: - "3306:3306" command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci environment: - MYSQL_ROOT_PASSWORD=mysql
dockerイメージの作成
docker build -t mysql:tatsu .
Docker起動
docker run -v C:/mmd/docker/mysql:/etc/mysql/conf.d -it --name test-wolrd-mysql -e MYSQL_ROOT_PASSWORD=mysql -d mysql:tatsu --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
MySQL起動まで
docker exec -it test-wolrd-mysql bash -p mysql -u root -pmysql -h 127.0.0.1
躓きポイント
MySQLで日本語が入力できない
- my.cnfが必要。コンテナにコピーされているか確認する
- 「RUN yum update -y && yum reinstall -y glibc-common」がないと「bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)」がでる
mysqlからの確認方法
SHOW VARIABLES LIKE 'char%';
dockerfileなおしたけど「bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)」エラー消えない
- イメージ作り直し忘れてない?
参考
https://qiita.com/TAMIYAN/items/ed9ec892d91e5af962c6