यह डोकर कंटेनर में उपयोगकर्ता की अनुमति के मेल न खाने के कारण हो रहा है।
प्रासंगिक फाइलों को कंटेनर में सूचीबद्ध करना:
$ 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
. पर सेट करें , और पुनः आरंभ करें!
डॉकरफाइल में:
USER postgres
docker-compose का उपयोग करना:
services:
postgres:
image: postgres:13
user: postgres