dockerの公式mysqlの実行ユーザのUIDを変更する

開発環境に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
comments powered by Disqus