Доступ для записи Wordpress при использовании Docker для Windows

Я хочу настроить локальную среду разработки Wordpress, поэтому пробую Docker для Windows и WSL. Я использовал стандартные изображения (wordpress: 4.9.7, mysql: 5.7 и phpmyadmin/phpmyadmin) и использовал docker-compose. Я могу запустить Wordpress, но сталкиваюсь с проблемами, когда пытаюсь обновить или добавить плагины.

У меня есть это в разделе службы Wordpress файла docker-compose.yml:

volumes:
  - ./wp-content:/var/www/html/wp-content

Это значит, что:

  1. Я могу редактировать файлы тем и плагинов на хосте (отлично), однако...
  2. папка контейнера /var/www/html/wp-content имеет вид root:root 755. Таким образом, Wordpress не может обновлять/добавлять плагины или загружать другие файлы от администратора, и я не могу это chown или chmod.

Если я удалю тома из docker-compose.yml, я снова получу доступ для записи, но не смогу редактировать или сохранять файл wp-content с хоста.

Мне просто нужна простая среда разработки Wordpress. Есть ли способ заставить это работать с Docker для Windows, или мне придется вернуться к использованию виртуальной машины?

EDIT: в соответствии с это невозможно разместить смонтировать том с помощью Docker для Windows и иметь любые разрешения, кроме 755.

Он не указывает, может ли владелец смонтированного тома внутри контейнера быть изменен с root:root или нет. Я пробовал различные способы сделать это в работающем контейнере (chown, кажется, не работает без уведомления), а также пробовал различные добавления «user:...» в docker-compose.yml, но без успех. Если владелец общего тома не может быть установлен или изменен, Wordpress не может записывать на этот общий том.

Одним из возможных решений может быть использование смонтированного тома во время разработки (т. е. при написании кода в Sublime на хосте в Windows), а затем удаление смонтированного тома всякий раз, когда мне нужно предоставить разрешения на запись Wordpress (например, обновление плагинов или добавление мультимедиа — в основном всякий раз, когда это необходимо). на самом деле нужно бежать). Звучит довольно ужасно, но похоже, что у меня ограниченные возможности.

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


person Ben    schedule 15.07.2018    source источник


Ответы (1)


Здесь есть несколько вариантов:

  1. Запустите контейнер как root, используя user: root внутри файла компоновки.
  2. Создайте свой собственный образ Docker, который просто расширяет WordPress, используя FROM wordpress и RUN chmod -R 766 /var/www/html/wp-content.
  3. Вручную перейдите в текущий работающий контейнер, используя docker exec --user root -it <container> bash, и запустите chmod -R 766 /var/www/html/wp-content.
person yamenk    schedule 15.07.2018
comment
Я пробовал методы 1 и 3, и они не работают для меня. Для метода 1 он все равно запускается от имени пользователя root по умолчанию (я проверил, войдя в контейнер и запустив whoami), но независимо от того, что я пробовал, Wordpress все равно не может писать, а chmod не влияет на wp- папка содержимого. Для метода 3 снова нет никакого эффекта на эту папку wp-content, если я запускаю chmod. Я думаю, что разрешения заблокированы, когда том используется совместно, и в этом вся проблема. - person Ben; 16.07.2018
comment
@ Бен, ты когда-нибудь приближался к жизнеспособному решению этой проблемы? Я борюсь с той же проблемой сейчас после перехода с Linux на Windows 10. Любая помощь или подсказки будут очень признательны. Заранее спасибо. - person cjs1978; 06.09.2019