Cela se produit en raison d'une incompatibilité d'autorisations utilisateur dans le conteneur Docker.
Liste des fichiers pertinents dans le conteneur :
$ 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
nous pouvons voir que tous les db_*.stat
les fichiers appartiennent à root:root
, tandis que global.stat
appartient à postgres:postgres
.
La vérification de l'utilisateur docker nous donne :
$ docker exec <container> whoami
root
Donc, nous aimerions que tous ces fichiers appartiennent à l'utilisateur postgres. Heureusement, c'est assez simple ! Définissez simplement l'utilisateur sur postgres
, et redémarrez !
Dans un dockerfile :
USER postgres
Utilisation de docker-compose :
services:
postgres:
image: postgres:13
user: postgres