PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

La base de données Postgres exécutée dans Docker continue de se bloquer

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