systemd-coredumpユーザでpermission failed

以下のようなphpは自分でbuildを、mysqlは直接imageを設定したdocker-composeでbuildをしようとするとエラーになったのでメモ
GitHub - tsaeki/20200229_permission_error

docker-comose up で実行すると、/dataのownerがsystemd-coredumpになる

➜  20200229_permission_error git:(master) ls -l
total 12K
drwxr-xr-x 6 systemd-coredump systemd-coredump 4.0K  2月 29 18:19 data
-rw-r--r-- 1 tsaeki           tsaeki            375  2月 29 18:19 docker-compose.yml
-rw-r--r-- 1 tsaeki           tsaeki            272  2月 29 18:22 Dockerfile

その状態でbuildを実行すると以下のエラーになる

➜  20200229_permission_error git:(master) docker-compose build                                           db uses an image, skipping
Building app
Traceback (most recent call last):
  File "bin/docker-compose", line 6, in <module>
  File "compose/cli/main.py", line 72, in main
  File "compose/cli/main.py", line 128, in perform_command
  File "compose/cli/main.py", line 303, in build
  File "compose/project.py", line 403, in build
  File "compose/project.py", line 385, in build_service
  File "compose/service.py", line 1106, in build
  File "site-packages/docker/api/build.py", line 160, in build
  File "site-packages/docker/utils/build.py", line 30, in tar
  File "site-packages/docker/utils/build.py", line 49, in exclude_paths
  File "site-packages/docker/utils/build.py", line 214, in rec_walk
  File "site-packages/docker/utils/build.py", line 214, in rec_walk
  File "site-packages/docker/utils/build.py", line 184, in rec_walk
PermissionError: [Errno 13] Permission denied: '/home/tsaeki/Develop/20200229_permission_error/data/sys'
[19125] Failed to execute script docker-compose

調べてみると以下の記事を発見。こちらはpostgresの例だがmysqlも同じ現象が発生した stackoverflow.com

mysql実行時にuid/gid999:999にしてたためownerが変わっていた

# uid/gid 999はsystemd-coredumpに割り振られている
$ grep systemd-coredump /etc/passwd
systemd-coredump:x:999:999:systemd Core Dumper:/:/sbin/nologin

解決策はdocker-compose.ymlにuserを追加する。そうすると指定したownerになる

diff --git a/docker-compose.yml b/docker-compose.yml
index e4b5bac..99914bf 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -17,4 +17,4 @@ services:
       MYSQL_PASSWORD: sampledbpassword
     volumes:
       - ./data:/var/lib/mysql
-
+    user: 1000:1000
➜  20200229_permission_error git:(master) ✗ ls -l
total 12K
drwxr-xr-x 6 tsaeki tsaeki 4.0K  2月 29 18:38 data
-rw-r--r-- 1 tsaeki tsaeki  394  2月 29 18:36 docker-compose.yml
-rw-r--r-- 1 tsaeki tsaeki  272  2月 29 18:22 Dockerfile

以上

docs.docker.com

hub.docker.com