sql >> Database >  >> RDS >> PostgreSQL

Toestemmingsprobleem met PostgreSQL in docker-container

Het andere antwoord wijst inderdaad naar de oorzaak van het probleem, maar de helppagina waarnaar het verwijst, bevat geen oplossing. Dit is wat ik heb bedacht om dit voor mij te laten werken:

  1. start de container met uw normale docker-compose-bestand, dit creëert de map met de hardcoded 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
  1. stop de container en verander handmatig het eigendom in uid:gid je wilt (ik gebruik 1000:1000 voor dit voorbeeld
$ docker stop postgres
$ sudo chown -R 1000:1000 ./data 
  1. Bewerk uw docker-bestand om uw gewenste uid:gid toe te voegen en start het opnieuw op met docker-compose (let op de 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

De reden waarom je niet gewoon user: . kunt gebruiken vanaf het begin is dat als de afbeelding als een andere gebruiker wordt uitgevoerd, het de gegevensbestanden niet kan maken.

Op de afbeeldingsdocumentatiepagina , het vermeldt wel een oplossing om een ​​volume toe te voegen om de /etc/passwd bestand als alleen-lezen in de afbeelding bij het verstrekken van --user optie werkte echter niet voor mij met de nieuwste afbeelding, omdat ik de volgende foutmelding kreeg. In feite werkte geen van de drie voorgestelde oplossingen voor mij.

initdb: error: could not change permissions of directory "/var/lib/postgresql/data": Operation not permitted


  1. MySQL-onderscheid tussen e en é (e acuut) - UNIEKE index

  2. Verbind online mysql-database met de lokale xampp-server met behulp van php

  3. Het dataframe naar de MySql DB-tabel schrijven

  4. Verbeter wachtwoord-hashing met een willekeurige salt