Det andet svar peger faktisk på årsagen til problemet, men hjælpesiden, det peger på, indeholder ikke en løsning. Her er, hvad jeg fandt på for at få dette til at fungere for mig:
- start containeren med din normale docker-compose-fil, dette opretter mappen med den hårdkodede uid:gid (999:999)
version: '3.7'
services:
db:
image: postgres
container_name: postgres
volumes:
- ./data:/var/lib/postgresql/data
environment:
POSTGRES_USER: fake_database_user
POSTGRES_PASSWORD: fake_database_PASSWORD
- stop containeren og skift manuelt ejerskabet til uid:gid, du ønsker (jeg bruger 1000:1000 til dette eksempel
$ docker stop postgres
$ sudo chown -R 1000:1000 ./data
- Rediger din docker-fil for at tilføje din ønskede uid:gid og start den op igen ved hjælp af docker-compose (læg mærke til
user:
)
version: '3.7'
services:
db:
image: postgres
container_name: postgres
volumes:
- ./data:/var/lib/postgresql/data
user: 1000:1000
environment:
POSTGRES_USER: fake_database_user
POSTGRES_PASSWORD: fake_database_password
Grunden til at du ikke bare kan bruge user:
fra starten er, at hvis billedet kører som en anden bruger, kan det ikke oprette datafilerne.
På side med billeddokumentation
, nævner den en løsning til at tilføje et volumen for at afsløre /etc/passwd
fil som skrivebeskyttet i billedet, når du angiver --user
mulighed, men det virkede ikke for mig med det seneste billede, da jeg fik følgende fejl. Faktisk virkede ingen af de tre foreslåede løsninger for mig.
initdb: error: could not change permissions of directory "/var/lib/postgresql/data": Operation not permitted