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

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

Комментарии (0)

Войдите, чтобы оставить комментарий.