K tomu dochází kvůli nesouladu uživatelských oprávnění v kontejneru ukotvitelného panelu.
Výpis příslušných souborů v kontejneru:
$ 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
můžeme vidět, že všechny db_*.stat
soubory jsou vlastněny root:root
, zatímco global.stat
je ve vlastnictví postgres:postgres
.
Kontrola uživatele dockeru nám dává:
$ docker exec <container> whoami
root
Takže bychom rádi, aby všechny tyto soubory vlastnil uživatel postgresu. Naštěstí je to docela snadné! Stačí nastavit uživatele na postgres
a restartujte!
V dockerfile:
USER postgres
Pomocí docker-compose:
services:
postgres:
image: postgres:13
user: postgres