Dies geschieht aufgrund einer nicht übereinstimmenden Benutzerberechtigung im Docker-Container.
Auflisten der relevanten Dateien im Container:
$ 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
wir können sehen, dass alle db_*.stat
Dateien gehören root:root
, während global.stat
gehört postgres:postgres
.
Die Überprüfung des Docker-Benutzers gibt uns Folgendes:
$ docker exec <container> whoami
root
Wir möchten also, dass alle diese Dateien dem Postgres-Benutzer gehören. Zum Glück ist das ganz einfach! Setzen Sie den Benutzer einfach auf postgres
, und neu starten!
In einer Dockerdatei:
USER postgres
Verwenden von docker-compose:
services:
postgres:
image: postgres:13
user: postgres