Това се случва поради несъответствие на потребителски разрешения в докер контейнера.
Изброяване на съответните файлове в контейнера:
$ 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
можем да видим, че всички db_*.stat
файловете са собственост на root:root
, докато global.stat
е собственост на postgres:postgres
.
Проверката на докер потребителя ни дава:
$ docker exec <container> whoami
root
Така че бихме искали всички тези файлове да бъдат собственост на потребителя на postgres. За щастие, това е доста лесно! Просто настройте потребителя на postgres
и рестартирайте!
В докер файл:
USER postgres
Използване на docker-compose:
services:
postgres:
image: postgres:13
user: postgres