понедельник, 1 декабря 2025 г.

Ошибка типа '/var/lib/postgresql/data': Operation not permitted, при запуске контейнеров в docker-compose при использовании WSL

Это очень распространенная проблема при использовании Docker в Windows с WSL 2, особенно если файлы проекта находятся в смонтированном разделе Windows (/mnt/c/...), а не в файловой системе Linux WSL (~/...).

Если вы используете WSL 2 и ваши файлы находятся на разделе NTFS (например, в директории /mnt/c/Users/...), то стандартные команды Linux chmod и chown не могут изменить реальные права доступа для процессов внутри контейнера Docker из-за ограничений монтирования WSL/NTFS.

Решение- использование именованных томов Docker (рекомендуется)
Вместо того чтобы монтировать конкретную локальную папку на вашем хосте (./.database/postgres/data) внутрь контейнера, мы позволим Docker управлять хранилищем данных самостоятельно через "именованный том" (named volume). Docker Volumes хранятся в специальном управляемом Docker'ом месте, где проблем с правами доступа не возникает.
Это самый чистый и надежный способ для работы с базами данных в Docker.

В файле docker-compose.yml надо заменить 
volumes:
    - ./.database/postgres/data:/var/lib/postgresql/data
на
volumes:
    - pgdata:/var/lib/postgresql/data
и добавить в конец файла:
volumes:
  pgdata:

Комментариев нет:

Отправить комментарий