Докер Wordpress супер медленный - PullRequest
0 голосов
/ 21 января 2019

У меня Wordpress работает внутри Docker, для локальной разработки, и он очень медленный. Мой docker-compose.yml выглядит так:

version: '3.3'

services:
  db:
    image: mysql:5.7
    volumes:
      - ./db_data:/var/lib/mysql
      - ./dbconfig.cnf:/etc/mysql/conf.d/custom.cnf
    restart: always
    ports:
      - "3308:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: wp_database
      MYSQL_USER: db_user
      MYSQL_PASSWORD: some_secure_password

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "80:80"
      - "443:443"
    restart: always
    volumes:
      - ./wp-content:/var/www/html/wp-content
      - ./.htaccess:/var/www/html/.htaccess
      - ./wp-config.php:/var/www/html/wp-config.php
      - ./logs/debug.log:/var/www/html/wp-content/debug.log
volumes:
  db_data: {}
  wp_content: {}

Насколько я читаю онлайн, это может быть причиной того, что я монтирую том wp-content, который вызывает очень медленную загрузку страницы (загрузка каждого файла, например файла jquery, занимает полсекунды, и это должно загрузить тонну файлов для одной страницы).

Есть ли решение для этого? Я читал о NFS, но у меня не получилось настроить NFS с помощью docker-compose, почему-то я продолжаю получать «ошибки прав доступа». С другой стороны, интерфейс Docker MacOS уже показывает мне вкладку «Общая папка», но я не знаю, использую ли я эти общие папки в данный момент или просто монтирую их снова.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 01 июня 2019

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

Я также пробовал такие решения, как NFS и другие рекомендации, такие как правильное исключение проекта из антивируса,добавление .dockerignore и т. д., которые в лучшем случае немного улучшают производительность.

При поиске аналогичного улучшения скорости я наткнулся на этот файл Docker в репозитории WordPress Starter https://github.com/visiblevc/wordpress-starter/blob/master/Dockerfile. Если вы посмотрите на этот файлвы увидите, что они инициализируют и монтируют проект в контейнере, монтируя его не в, скажем, / var / www / html / напрямую, а во временную папку.Затем они синхронизируют эту временную папку с / var / www / html / через bindfs.Таким образом, каждый раз, когда вы загружаете страницу WordPress в браузере, она будет молниеносной, потому что ей не нужно будет обращаться к файлам хоста и читать их при каждом запросе.Файлы WordPress являются частью контейнера Linux.Когда вы вносите изменения в свой код, эти изменения будут отражаться во временной папке контейнера, и bindfs мгновенно синхронизирует эти изменения с общедоступной папкой контейнера, и наоборот.Все изменения, сделанные в общей папке, будут синхронизированы во временную папку, а оттуда - в файлы проекта вашего хоста.

TL; DR Монтирование во временную папку в контейнере, синхронизируйте эту папку с Bindfs в папке общего сервера,Обслуживание сайта WP с прямым монтированием происходит медленно, поскольку контейнер должен обращаться к файлам хоста один за другим, что является сложным процессом.Обслуживание из общей папки, в то время как файлы являются частью контейнера, выполняется намного быстрее.

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