sql >> Database teknologi >  >> RDS >> PostgreSQL

Tilladelsesproblem med PostgreSQL i docker-container

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:

  1. 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
  1. 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 
  1. 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.

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


  1. Forespørg MSQL for vindere, startende på xth plads ved hjælp af SELECT

  2. mySQL Table ERROR 1064

  3. Dynamisk oprettelse af DAG baseret på Row tilgængelig på DB Connection

  4. hvorfor producerer denne MySQL-forespørgsel de forkerte rækkenumre?