PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres-Datenbank, die im Docker ausgeführt wird, bleibt hängen

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