Разрешения Docker общего тома - PullRequest
0 голосов
/ 26 марта 2019

Я использую docker-compose для создания множества контейнеров Docker. Все контейнеры имеют общий объем.

volumes:
  - ${PHP_SERVICES_FOLDER}:/var/www/web

Контейнеры-докеры выглядят следующим образом.

  • Jenkins (ОТ jenkins / jenkins: последняя версия) - запись в общий том
  • Nginx (FROM nginx) - читает из общего тома и использует контейнер php-fpm
  • PHP-FPM (ОТ php: 7.2-fpm)

С правами доступа к файлам тома 777 Nginx и PHP могут читать, записывать и выполнять файлы, но как только я запускаю сборку в Jenkins, которая обновляет файлы в томе.

Я думаю, причина, по которой он работает, когда права доступа 777, заключается в том, что это дает «другим» пользователям полный доступ к тому.

Как можно, чтобы Nginx, PHP-FPM и Jenkins использовали одного и того же пользователя для чтения, записи и выполнения файлов на этом томе?

1 Ответ

0 голосов
/ 26 марта 2019

Вы можете создать пользователя в каждом из файлов Docker, используя тот же uid, а затем дать пользователю права доступа с этими uid s.

Например:

# your dockerfile
RUN groupadd -g 799 appgroup
RUN useradd -u 799 -g appgroup shareduser
USER shareduser

Тогда вам просто нужно chown все в томе с вновь созданным uid (в любом контейнере или на хосте, так как uid s распределяется между контейнером и хостом:

chown -R 799:799 /volume/root/
...