車輪の再発明でもいいじゃない

フリーランスエンジニアがいろいろ試したりすること

docker-comporse + Mysql で my.conf が読み込めない!

コンテナ・・・それは「OSレベルの仮想化により、プリケーションを開発・実行環境から隔離」[1]=ホストマシンの差異をなくしてどんな環境でも一緒だよ

と思っていたんですが、そうではなかったって話です。 そもそも Docker 自体がホストマシンの影響を受けて動作が変わることがあるんですね。

image: mysql:5.6.41
volumes:
      - ./developData/conf.d/my.conf:/etc/mysql/conf.d/my.conf

例えば上記みたいに書いていると、理想は mysqlが起動時にmy.conf を読んで設定が反映されることですが、されません。 理由は以下2つがたまたま合致してしまうのです

  • mysql だと 777 のファイルは読み込んでくれない
  • Windows では docker-comporse の volume で設定したファイルのパーミションは777となる

Macでほかの人の作成した comporse 動かした際にこの件ではまりまくりました。 うーん。と悩んだ際にたまたまログ見てみると以下のログが出ていて、それっぽい記事[2]を見つけました

WSL で ubuntu 動かしてその上でやっていたので Windows 環境って認識がなかったのです。 いやー。WSL + 仮想環境って難しい

Warning: World-writable config file '/etc/mysql/conf.d/my.cnf' is ignored

追記

  • 2020/7/30
    • これはたぶんWinとフォルダ共有しているのが原因かもです。完全に docker 内に閉じていれば発生しない問題かも

[1] Docker https://ja.wikipedia.org/wiki/Docker

[2] Windows + docker-compose + mysql で文字化けさせない方法 https://qiita.com/waterada/items/1dbf6a977611e0e8f5c8