今日の自分を支える 技術→マネジメント

技術職→管理職になりました

WindowsのDockerでMySQLを動かしたい

手順が1つにまとまったサイトがなかったので記事にする。

前提

Dockerで書籍学習以外のコンテナを作るのは初めての超初心者が書いています。

ホスト環境

  • Windows11
  • Docker version 20.10.17, build 100c701

作りたいMySQL環境

  • mysql5.7

手順

  1. MySQLコンテナ用のフォルダを作成し、移動しておく
  2. my.cnfの作成。作成したファイルは読み取り専用にしておく。

     [mysql]
     default-character-set=utf8mb4
     [mysqld]
     character-set-server=utf8mb4
     collation-server=utf8mb4_bin
     [client]
     default-character-set=utf8mb4
    
  3. 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
    
  4. 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
    
  5. dockerイメージの作成

     docker build -t mysql:tatsu .
    
  6. 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
    
  7. 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

http://taustation.com/mysql-enable-multibyte-input-2/

https://gouf.hatenablog.com/entry/2018/02/18/155729