sql >> Databáze >  >> RDS >> PostgreSQL

Problém s oprávněním k PostgreSQL v kontejneru dockeru

Druhá odpověď skutečně ukazuje na hlavní příčinu problému, ale stránka nápovědy, na kterou odkazuje, řešení neobsahuje. Tady je to, co jsem vymyslel, aby mi to fungovalo:

  1. spusťte kontejner pomocí normálního souboru docker-compose, tím se vytvoří adresář s pevně zakódovaným 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. zastavte kontejner a ručně změňte vlastnictví na požadované uid:gid (pro tento příklad použiji 1000:1000
$ docker stop postgres
$ sudo chown -R 1000:1000 ./data 
  1. Upravte soubor dockeru, přidejte požadované uid:gid a spusťte jej znovu pomocí docker-compose (všimněte si 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

Důvod, proč nemůžete jednoduše použít user: od začátku je, že pokud je obraz spuštěn jako jiný uživatel, nepodaří se vytvořit datové soubory.

Na stránce dokumentace k obrázku , zmiňuje řešení, jak přidat svazek k odhalení souboru /etc/passwd soubor jako pouze pro čtení v obrázku při poskytnutí --user možnost, která mi však s nejnovějším obrázkem nefungovala, protože jsem dostával následující chybu. Ve skutečnosti žádné ze tří navrhovaných řešení pro mě nefungovalo.

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


  1. Rails Migrations:pokusili se změnit typ sloupce z řetězce na celé číslo

  2. php- získat poslední vložené id

  3. Jak používat jakoukoli klauzuli Postgres s nativními dotazy JPA/Hibernate (parametry pole)

  4. Vytvořit index v zobrazení SQL pomocí operátorů UNION? Opravdu to zlepší výkon?