WordPress разрешения на моем локальном сервере с Docker

Вопрос или проблема

Я использую Docker и Docker Compose для установки WordPress на локальный хост, и все работает хорошо, однако у меня возникают проблемы при загрузке новых медиафайлов и установке тем, новых плагинов и т.д.

Сообщение “Не удалось создать директорию” появляется, когда я хочу установить новый плагин.

После обширных исследований я попробовал много вариантов, чтобы исправить права на файлы/папки, даже с помощью chmod 777, но безуспешно.

Мой файл docker-compose:

wordpress:
  container_name: testing
  image: wordpress
  environment:
    - WORDPRESS_DB_PASSWORD=password
    - VIRTUAL_HOST=stores.dev
  ports:
    - "80:80"
  volumes:
    - ./:/var/www/html
  links:
    - psdb4:mysql

psdb4:
  image: mysql:5.7
  environment:
    - MYSQL_ROOT_PASSWORD=password
    - MYSQL_DATABASE=wordpress

Я использовал следующую команду безуспешно в каталоге WordPress:

chmod -R 777 wordpress
chmod -R 755 wordpress

Я использую Mac на El Capitan 10.11.6.

Было бы неплохо, чтобы мой виртуальный хост ‘stores.dev’ тоже работал, но это не получается, и сайт WP можно открыть только через IP-адрес моей docker-машины.

Почти потерял надежду на все это и хочу, чтобы все было исправлено.

С уважением,

Мэтт

В итоге я выбрал XAMPP и приложение WordPress Bitnami.

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

Ответ или решение

Теория

Когда вы работаете с WordPress в Docker, одна из наиболее распространенных проблем, с которыми сталкиваются пользователи, связана с правами доступа к файловой системе. Проблема "невозможно создать директорию" возникает, когда контейнер WordPress не имеет необходимых прав на запись в директории, куда он пытается установить плагины, темы или загружать медиафайлы. Это связано с тем, что Docker использует контейнеризированную файловую систему, которая может иметь иные права по сравнению с вашей локальной машиной.

Кроме того, в вашем случае вы попробовали изменить права доступа, применив команды chmod -R 777 и chmod -R 755 на директорию WordPress, но это не решило проблему. Это может указывать на то, что проблема кроется не только в правах доступа, но и в владельце файловых систем.

Также, проблема с доступом к вашему сайту через виртуальный хост "stores.dev" может быть связана с конфигурацией сети Docker и отсутствием корректных записей в файле /etc/hosts на вашем Mac.

Пример

Давайте рассмотрим пример корректной настройки docker-compose и связанных параметров:

version: '3.7'

services:
  wordpress:
    container_name: wordpress
    image: wordpress:latest
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: password
      WORDPRESS_DB_NAME: wordpress
    ports:
      - "8000:80"
    volumes:
      - ./wordpress:/var/www/html
    depends_on:
      - db

  db:
    container_name: db
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress

volumes:
  db_data:

В этом примере, возможно, потребуется изменить права доступа и владельца на каталог wordpress локально, чтобы обеспечить доступ контейнера к этому каталогу.

Применение

Шаг 1: Убедитесь в правильности прав доступа

Перед тем как начать, убедитесь, что пространство монтирования имеет корректные права доступа. Используйте следующую команду для изменения владельца директорий:

sudo chown -R $USER:$USER ./wordpress

Эта команда изменяет владельца директорий на текущего пользователя, что часто решает проблему с правами доступа.

Шаг 2: Коррекция сети Docker

Чтобы ваш виртуальный хост "stores.dev" работал, добавьте его в файл /etc/hosts. Откройте терминал и внесите следующие изменения:

sudo nano /etc/hosts

Добавьте следующую строку, заменив <DOCKER_IP> реальным IP-адресом Docker-контейнера:

<DOCKER_IP> stores.dev

Шаг 3: Запуск контейнеров

Перезапустите ваши контейнеры Docker:

docker-compose down
docker-compose up -d

Шаг 4: Проверка корректности

Попробуйте загрузить страницу вашего WordPress сайта через виртуальный хост "stores.dev". Если это не работает, убедитесь, что вы очищаете DNS-кэш вашего браузера и системы.

Соблюдая данные рекомендации, вы должны получить работоспособный WordPress на локальной машине, который способен корректно загружать медиафайлы и обновлять плагины и темы. Такой подход поможет стабилизировать среду разработки, избежать проблем с правами доступа и упростить управление вашим проектом.

Оцените материал
Добавить комментарий

Капча загружается...