Dette sker på grund af en uoverensstemmelse mellem brugertilladelser i docker-beholderen.
Visning af de relevante filer i containeren:
$ 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, at alle db_*.stat
filer ejes af root:root
, mens global.stat
er ejet af postgres:postgres
.
Ved at tjekke docker-brugeren får vi:
$ docker exec <container> whoami
root
Så vi vil gerne have, at alle disse filer ejes af postgres-brugeren. Heldigvis er dette ret nemt! Indstil blot brugeren til postgres
, og genstart!
I en dockerfil:
USER postgres
Brug af docker-compose:
services:
postgres:
image: postgres:13
user: postgres