Dockerfile "RUN chmod" не вступает в силу - PullRequest
1 голос
/ 08 мая 2019

Все остальное вступает в силу, но разрешения не меняются, я что-то упустил?

FROM joomla:3.9-php7.2-apache

RUN apt-get update \
&& apt-get install -y apt-utils vim curl

COPY ./joomla_html /var/www/html

RUN chmod -R 765 /var/www/html/

RUN chown -R www-data. /var/www/html/
RUN chmod -R 777 /var/www/html/tmp
RUN chmod -R 777 /tmp
RUN chmod -R 777 /var/www/html/modules
RUN chmod -R 777 /var/www/html/components
RUN chmod -R 777 /var/www/html/administrator/logs
RUN chmod -R 777 /var/www/html/images
RUN chmod -R 777 /var/www/html/uploads

COPY ./docker/php.ini /usr/local/etc/php/conf.d/php-extras.ini

EXPOSE 80

Это то, что я получаю, каждый файл имеет права на 1000: 1000, мне нужно, чтобы он был на www-data

Вывод ls -la / var / www / html равен

total 144
drwxr-xr-x 19 1000 1000 4096 May 8 18:53 .
drwxr-xr-x 1 root root 4096 May 8 02:30 ..
drwxr-xr-x 25 1000 1000 4096 May 8 18:53 components
drwxr-xr-x 6 1000 1000 4096 May 8 18:53 images
drwxr-xr-x 68 1000 1000 4096 May 8 18:53 modules
drwxr-xr-x 2 1000 1000 4096 May 8 18:53 tmp
drwxr-xr-x 2 1000 1000 4096 May 8 18:53 uploads

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Каталог определен как восходящий том: https://github.com/joomla/docker-joomla/blob/d34ff24288dfb5b27a167f870f1fcca56077be78/php7.2/apache/Dockerfile#L64

VOLUME /var/www/html

Тома не могут быть изменены с помощью команды RUN.Они начинаются во временном контейнере с томом, и сохраняются только изменения в контейнере, а не том.

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

В противном случае, если вы хотите расширить образ и внести изменения с помощью команд RUN, вам необходимо сохранить свои файлы в другомкаталог.У вас также может быть точка входа, которая копирует эти файлы в / var / www / html при запуске контейнера.

Можно также рассмотреть возможность многоэтапной сборки, исправления разрешений на первом этапе и последующего копирования файлов напрямую.в объеме на стадии выпуска.Как вы заметили, COPY по-прежнему работает с томами.Он не реализован с временным контейнером и поэтому может помещать файлы непосредственно в файловую систему образа.

0 голосов
/ 08 мая 2019

Вы должны установить владельца непосредственно при копировании файлов:

FROM joomla:3.9-php7.2-apache

RUN apt-get update \
&& apt-get install -y apt-utils vim curl

COPY --chown=www-data:www-data ./joomla_html /var/www/html

RUN chmod -R 765 /var/www/html/

COPY ./docker/php.ini /usr/local/etc/php/conf.d/php-extras.ini

EXPOSE 80
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...