Docker compose меняет группу на 999 и выдает ошибку Permission denied?

Привет!
После последнего обновления докера, запуск команды docker compose up под wsl
docker-compose.yaml

version: "3.7"

services:
  postgres:
    image: postgres:latest
    restart: always
    container_name: postgres
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: postgres
    volumes:
      - .:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    command: [ "postgres", "-c", "log_statement=all" ]


приводит к смене группы для всех файлов и папок, в т.ч. вложеннных, которые расположены в одной папке с docker-compose.yaml. Юзер меняется на 999. И соответственно, при попытке доступа получаю ошибку - Permission denied.
6310789f87fab568278485.jpeg

sudo chown -R ctac:ctac . Помогает только до следующего запуска docker compose.
sudo usermod -aG docker $USER не помогло.
  • Вопрос задан
  • 333 просмотра
Решения вопроса 1
@mureevms
999 - это UID пользователя postgres внутри контейнера. При инициализации БД, владельцем каталога /var/lib/postgresql/ назначается пользователь postgres. Когда вы маппите этот каталог в текущий (это следет из volumes), то конечно все рекурсивно будет принадлежать 999 UID'у. Это логичное и ожидаемое поведение.
Чтобы решить можно изменить базовый образ, что запарно. Другие варианты:
- назначить пользователю, работающему с этим каталогом, 999 UID в материнской системе
- создать группу с 999 GID'ом и добавить пользователя в эту группу.

А еще лучше просто не лазить туда. Если все же требуется, повышать привелегии до рута. Или же созать подкаталог и маппить в него, чтобы текущий не аффектился
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы