VMwareの仮想マシンで、開発環境を構築してきましたが、 Dockerでの開発環境に取り組んでいます。
Windowsに、WSLを導入し、dockerを使っていますが、この環境で動く、docker-compose.ymlが、ubuntuに持っていくと動きません。
原因は、主に、ファイルのパーミッションです。
docker内のユーザーと、ホストのユーザーが異なるため、アクセスできるように、設定を気をつけないと、ubuntuでは動きません。
ユーザーは、
・ホスト?側のファイルを所有するユーザー
・dockerを起動するユーザー
・コンテナ内で、サービスを起動するユーザー
この3つが関わるため、面倒でした。
ファイルの所有ユーザーと、コンテナ内のユーザーの違いについては、情報を、よく見かけますが、dockerのコンテナを起動するユーザーは盲点でした。
*.envで、環境変数(コンテナ内のデータベースのユーザー名、パスワード)を管理しますが、このファイルが、コンテナ内に反映されず、悩みました。
面倒なので、関係のあるフォルダは、下記のコマンドで読み込み権限を与えて解決しました。
$ chmod +r -R フォルダ名
セキュリティを考えれば、UIDを一致させるなどした方が良さそうですが、妥協しました。
また、mysqlでは、my.confとmy.cnfの名前の違いも考慮する必要がありました。
おそらく、ubuntu側で、dockerファイルを作成し、windowsに持っていく流れであれば問題ないと思いますが、逆は、はまりました。
0 件のコメント:
コメントを投稿