Detta händer på grund av att användarbehörighet inte överensstämmer i dockningsbehållaren.
Lista relevanta filer i behållaren:
$ 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
vi kan se att alla db_*.stat
filerna ägs av root:root
, medan global.stat
ägs av postgres:postgres
.
Att kontrollera docker-användaren ger oss:
$ docker exec <container> whoami
root
Så vi vill att alla dessa filer ska ägas av postgres-användaren. Lyckligtvis är detta ganska enkelt! Ställ bara in användaren på postgres
, och starta om!
I en dockerfil:
USER postgres
Använda docker-compose:
services:
postgres:
image: postgres:13
user: postgres