Dit gebeurt vanwege een niet-overeenkomende gebruikersmachtiging in de docker-container.
De relevante bestanden in de container weergeven:
$ 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
we kunnen zien dat alle db_*.stat
bestanden zijn eigendom van root:root
, terwijl global.stat
is eigendom van postgres:postgres
.
Het controleren van de docker-gebruiker geeft ons:
$ docker exec <container> whoami
root
We willen dus dat al deze bestanden eigendom zijn van de postgres-gebruiker. Gelukkig is dit vrij eenvoudig! Stel de gebruiker gewoon in op postgres
, en herstart!
In een dockerbestand:
USER postgres
Docker-compose gebruiken:
services:
postgres:
image: postgres:13
user: postgres