Проблема с разрешением PostgreSQL в Docker-контейнере - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь запустить образ докера с PostgreSQL, чей том настроен для сохранения данных.

docker-compose.yml

version: '3.1'

services:
  db:
    image: postgres
    restart: always
    volumes:
      - ./data:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: example

Когда я запускаю контейнер, я вижувывод

исправление разрешений для существующего каталога / var / lib / postgresql / data ... ок

и папка данных больше не читается для меня.

Если я поднимусь и получу доступ к каталогу данных, я увижу, что файлы там.Кроме того, команда ls -ld data дает мне

drwx------ 19 systemd-coredump root 4096 May 17 16:22 data

Я могу вручную установить разрешение каталога с помощью sudo chmod 755 data, но это работает только до перезапуска контейнера.

Почему это происходит, и как я могу это исправить?

1 Ответ

0 голосов
/ 17 мая 2019

Это из-за того, что написано в dockerfile образа postgres.
От 15 до 18 вы увидите, что используются группа 999 и пользователь 999. Я предполагаю, что на вашем хосте они отображаются соответственно на systemd-coredump и root.

Вы должны знать, что всякий раз, когда вы используете пользователя / группу в изображении, если uid / gid существует на вашем хосте, тогда он будет сопоставлен с ним.

Вы можете прочитать документацию по концентратору докеров из образа postgres здесь . Есть раздел Произвольные --user Notes , в котором объясняется, как это работает в контексте этого изображения.

...