これは、Dockerコンテナのユーザー権限の不一致が原因で発生しています。
コンテナ内の関連ファイルの一覧表示:
$ docker exec <container> ls -l /var/lib/postgresql/data/pg_stat_tmp
-rw------- 1 root root [...] db_0.stat
-rw------- 1 root root [...] db_1.stat
-rw------- 1 root root [...] db_2.stat
-rw------- 1 postgres postgres [...] global.stat
すべてのdb_*.stat
ファイルはroot:root
が所有しています 、global.stat
postgres:postgres
が所有しています 。
dockerユーザーを確認すると、次のようになります。
$ docker exec <container> whoami
root
したがって、これらのファイルはすべてpostgresユーザーが所有する必要があります。幸いなことに、これは非常に簡単です。ユーザーをpostgres
に設定するだけです 、再起動してください!
dockerfileの場合:
USER postgres
docker-composeの使用:
services:
postgres:
image: postgres:13
user: postgres