開発環境にdockerでmysqlを立てるとき、データをproject配下に置くと所有者・所有グループが適当なユーザになってしまうため、grepをかけたりするとエラーが出てしまいます。
別に困るということはないのですが、うざったいので所有者をログイン中のユーザに変更してしまいます。
ホスト環境はlinux(fedora25)です。docker for windows/macの場合はよく知りません。
公式mysqlイメージの実行ユーザは「mysql」
何もせずに公式mysqlのイメージを立ち上げた場合、/var/lib/mysqlのイメージをホストから見ると所有者があまり見たことのないユーザになります。
-rw-r----- 1 systemd-timesync input 56 2月 4 15:46 auto.cnf
-rw-r----- 1 systemd-timesync input 50331648 2月 4 15:46 ib_logfile0
-rw-r----- 1 systemd-timesync input 50331648 2月 4 15:46 ib_logfile1
-rw-r----- 1 systemd-timesync input 12582912 2月 4 15:46 ibdata1
-rw-r----- 1 systemd-timesync input 12582912 2月 4 15:46 ibtmp1
drwxr-x--- 2 systemd-timesync input 4096 2月 4 15:46 mysql
drwxr-x--- 2 systemd-timesync input 4096 2月 4 15:46 performance_schema
UID=999、GID=999です。
999は公式mysqlイメージ上では「mysql」ユーザです。mysqlはrootではなくmysqlユーザにスイッチしてから待機しますが、mysqlユーザはUIDもGIDも999で設定されています。
mysqlユーザのUID/GIDを変更する
linuxの一般的な作業ユーザのUID/GIDは1000以上で作られます。手元の開発環境も初期ユーザなのでUID/GIDが1000で作られています。
そこで、dockerイメージ上のmysqlユーザのUID/GIDを1000にしてしまうことにします。
それ用にDockerfileを作ります。
FROM mysql:5.7
MAINTAINER noldor
RUN groupmod -g 1000 mysql && usermod -u 1000 -g 1000 mysql
これで、ホスト上から見たファイル所有者のUID/GIDは自分のものになります。
-rw-r----- 1 takekoshi takekoshi 56 2月 4 15:45 auto.cnf
-rw-r----- 1 takekoshi takekoshi 50331648 2月 4 15:45 ib_logfile0
-rw-r----- 1 takekoshi takekoshi 50331648 2月 4 15:45 ib_logfile1
-rw-r----- 1 takekoshi takekoshi 12582912 2月 4 15:45 ibdata1
-rw-r----- 1 takekoshi takekoshi 12582912 2月 4 15:45 ibtmp1
drwxr-x--- 2 takekoshi takekoshi 4096 2月 4 15:45 mysql
drwxr-x--- 2 takekoshi takekoshi 4096 2月 4 15:45 performance_schema
最近のコメント