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