PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Problem z uprawnieniami do PostgreSQL w kontenerze docker

Druga odpowiedź rzeczywiście wskazuje na pierwotną przyczynę problemu, jednak strona pomocy, na którą wskazuje, nie zawiera rozwiązania. Oto, co wymyśliłem, aby to działało dla mnie:

  1. uruchom kontener przy użyciu normalnego pliku docker-compose, spowoduje to utworzenie katalogu z zakodowanym na stałe 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. zatrzymaj kontener i ręcznie zmień własność na uid:gid, który chcesz (w tym przykładzie użyję 1000:1000
$ docker stop postgres
$ sudo chown -R 1000:1000 ./data 
  1. Edytuj plik docker, aby dodać żądany uid:gid i uruchom go ponownie za pomocą docker-compose (zwróć uwagę na 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

Powód, dla którego nie możesz po prostu użyć user: od początku jest to, że jeśli obraz działa jako inny użytkownik, nie udaje się utworzyć plików danych.

Na stronie dokumentacji obrazów , wspomina o rozwiązaniu polegającym na dodaniu woluminu w celu ujawnienia /etc/passwd plik jako tylko do odczytu w obrazie przy podawaniu --user jednak opcja ta nie działała dla mnie z najnowszym obrazem, ponieważ otrzymywałem następujący błąd. W rzeczywistości żadne z trzech proponowanych rozwiązań nie zadziałało dla mnie.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak usunąć każdą tabelę w określonym schemacie w postgresie?

  2. * Nierozpoznane pole pod adresem:baza danych Czy chodziło Ci o:- metryki - serwer - logowanie - DROPWIZARD

  3. Jak mogę zatrzymać wykonywanie zapytania sql w php?

  4. Jak działa justify_interval() w PostgreSQL

  5. Znajdowanie kombinacji określonych wartości