PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

O banco de dados Postgres em execução no docker continua travando


Isso está acontecendo devido a uma incompatibilidade de permissão do usuário no contêiner docker.

Listando os arquivos relevantes no contêiner:
$ 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

podemos ver que todos os db_*.stat os arquivos são de propriedade de root:root , enquanto global.stat é propriedade de postgres:postgres .

A verificação do usuário do docker nos dá:
$ docker exec <container> whoami
root

Então, gostaríamos que todos esses arquivos fossem de propriedade do usuário postgres. Felizmente, isso é bem fácil! Basta definir o usuário para postgres , e reinicie!

Em um arquivo docker:
USER postgres

Usando docker-compose:
services:
  postgres:
    image: postgres:13
    user: postgres