はじめに
コンテナ・・・それは「OSレベルの仮想化により、プリケーションを開発・実行環境から隔離」[1]=ホストマシンの差異をなくしてどんな環境でも一緒だよ・・・と思っていたんですが、そうではなかったって話です。
何があったのか
以下のような警告が出て、MySQL は立ち上がるのですが、設定が反映されていませんでした。Macでほかの人の作成した comporse 動かした際にこの件ではまりまくりました。
Warning: World-writable config file '/etc/mysql/conf.d/my.cnf' is ignored
conpose.yml の設定は以下です。
image: mysql:5.6.41
volumes:
- ./developData/conf.d/my.conf:/etc/mysql/conf.d/my.conf
例えば上記みたいに書いていると、理想は mysqlが起動時にmy.conf を読んで設定が反映されることですが、されません。
原因
以下2つがたまたま合致してしまうのです
- mysql だと 777 のファイルは読み込んでくれない[1]
- Windows では docker-comporse の volume で設定したファイルのパーミションは777となる
対応
- Windows の VirtualBox でマウントしてるディレクトリ に ファイルを置くのをやめる
そもそも Docker 自体がホストマシンの影響を受けて動作が変わることがあるんですね。
WSL で ubuntu 動かしてその上でやっていたので Windows 環境って認識がなかったのです。
いやー。WSL + 仮想環境って難しい
参考
[1] Windows + docker-compose + mysql で文字化けさせない方法, https://qiita.com/waterada/items/1dbf6a977611e0e8f5c8#%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91%E3%81%99%E3%82%8B%E6%9D%A1%E4%BB%B6
コメント