Настройка прав на файлы и директории в Docker-контейнере для Linux-систем

При использовании стека PHP+DOCKER (+ все остальное) на Linux-системах у вас, скорее всего, возникнут проблемы с правами в контейнере. Нельзя будет записать какой-либо файл в директорию, начнут вылетать ошибки при сохранении логов и всё в таком духе. При использовании фреймворков, например, такого как Laravel, эта проблема уже решена его разработчиком, а во всех других случаях решать коллизию с правами нужно своими руками. Ниже приведён один из простых вариантов решения.

  php-fpm:
    build:
      context: ./docker/php
    volumes:
      - ./:/app
    working_dir: /app
    environment:
      - PHP_USER_ID=${PHP_USER_ID:-500}
      - PHP_GROUP_ID=${PHP_GROUP_ID:-500}

В блоке выше фрагмент docker-compose.yml, где вам нужно указать вместо «500» своё значение. Чтобы узнать чему оно равно у вас, запустите консоль и введите «id» и вам выведется идентификатор пользователя (uid) и идентификатор группы (gid). Они-то вам и нужны.

Осталось только внести правки в Dockerfile, чтобы использовать указанные ранее «uid» и «gid»:

FROM php:8.2-fpm
 
ARG PHP_USER_ID=500
ARG PHP_GROUP_ID=500
 
# Установка желаемых модулей.
 
RUN groupadd -g $PHP_GROUP_ID appgroup \
    && useradd -u $PHP_USER_ID -g appgroup -m appuser
 
USER appuser

После внесения правок пересоберите и запустите контейнер:

docker-compose up --build -d

26.11.2023

Категория(-и): Docker, Linux

#

Добавить комментарий