Владение файлами на докере по имени тома - PullRequest
2 голосов
/ 12 апреля 2019

У меня проблема с владением папками при попытке запустить WordPress на контейнерах Docker.Папки типа wp-content и themes принадлежат пользователю root, что не позволяет мне устанавливать темы и плагины из веб-интерфейса.

Цели

  • Запуск WordPress в Docker.
  • Получить тему из репозитория git (принадлежит нам).
  • Уметь запускать WP-CLI из официального образа Docker (wordpress:cli).
  • Уметьустанавливать темы и плагины из веб-интерфейса.
  • Все файлы и папки в /var/www/html должны принадлежать www-data (uid 33).

Спецификации

  • Docker версия 18.09.5, сборка e8ff056
  • docker-compose версия 1.24.0, сборка 0aa59064
  • отдельные экземпляры контейнеров для каждой службы - без kubernetes, swarm, stack и т. Д.
  • My docker-compose.yml
  • My dockerfile (скопировано из репозитория git):

FROM wordpress:5

COPY --chown=33 ./ /var/www/html/wp-content/themes/theme/

Тома

Я не объявляю тома в моем докер-файле - это только те две строки выше, больше ничего.Фактически, это изображение существует только для копирования папки в изображение WordPress.Изображение WordPress (из которого происходит мое изображение) объявляет том в своем файле Docker.

Я объявляю тома в моем файле docker-compose, но при их отсутствии проблема сохраняется

Результаты

Владельцы файлов и папок ...


ОБНОВЛЕНИЕ

Возникла некоторая проблема сCOPY шаг в сборке Docker, но я не могу понять, что.

Я изменил свой dockerfile на

FROM alpine
COPY ./ /var/www/html/wp-content/themes/theme/
RUN chown -R 33:33 /var/www/html
RUN ls -n /var/www/html

Если я строю из alpine, uid 33 является владельцем:

Step 4/4 : RUN ls -n /var/www/html
 ---> Running in e9850fa85800
total 4
drwxr-xr-x    1 33       33            4096 Apr 12 19:34 wp-content

Я изменяю первую строку на FROM wordpress, сейчас root является владельцем :

Step 4/4 : RUN ls -n /var/www/html
 ---> Running in 2810cc37aaba
total 4
drwxr-xr-x. 3 0 0 4096 Apr 12 19:38 wp-content

Как мне перейти к получению желаемых результатов (то есть файлов тем на /var/www/html/wp-content/themes/theme/ и всех файлов и папок, принадлежащих www-data (uid 33))?

1 Ответ

0 голосов
/ 12 апреля 2019

вы можете установить владельца, используя команду ADD или COPY в dockerfile, для вашей команды COPY попробуйте COPY --chown:www-data:www-data ./ /var/www/html/wp-content/themes/theme/.

...