【docker-compose】mysqlのmy.cnfが反映されずにうまくいかない。windowsが原因の一つだった。

docker

docker環境でmysqlを立てた時に、日本語に対応するようにしたかった。

だからmy.cnfを記入して日本語に対応させようとしたんだけど、なんか反映されないわ意味わかってなかったわで沼にはまった。

環境は

  • docker
  • windows 10
  • mysql 8.x

何が原因だったのか 原因1

まず、docker-composeのvolumeでmy.cnfをマウントするところから沼にはまった。

こんな書き方をしていた。

  mysql:
    container_name: {container name}
    build: ./docker/mysql
    tty: true
    networks:
      yamari_net:
        aliases:
          - mysql
        ipv4_address: 172.31.0.3
    expose:
      - 3306
    volumes:
      - ./DBdata:/var/lib/mysql
      - ./conf/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_DATABASE: {DBname}

こうした時にmy.cnfは勝手に作られるもんだと僕は思っていたが大間違い。

/etc/mysql/conf.d/my.cnfの読み込み(コンテナ側)を./conf/mysql/my.cnfに当てる感じになるのだが、自分でファイルを作っていなかった。

なのでまず起きたこととしては、何も読み込み元を作っていなかったために、何もないということを読み込んでいたんですね。

ああ、ややこしい。

とりあえず、mount元となるファイル、フォルダを作っていないといけないわけです。

勝手に作ってくれるというのは大間違い!

ということでえっこらえっこらmy.cnfを自分で作ります。

何が原因だったのか 原因2

my.cnfを作ってdocker-compose up!!!

したわけだけど、結局日本語対応になってねえじゃん....

よくよく調べてみれば、windowsが関係していたらしい。

my.cnfは読み取り専用じゃないといけないらしくそれができていなかった。

ということでエクスプローラーを開いて、my.cnfを右クリック>プロパティ

読み取り専用にチェックを入れます。

ほんで再起動させるとあら不思議、うまいこといっているじゃないですか!!

まとめ

  • 問題1: 自分でマウント元のファイルを作る必要があった。

  • 問題2: windowsの関係で、my.cnfを「読み取り専用」にする必要があった。

上記2点が問題でうまくいっていませんでした。

結構時間取られたんで、もう今後こんなことはないようにしたい....

コメント

  1. 通りすがりのdocker初心者 より:

    助かりました!ありがとうございます

タイトルとURLをコピーしました