Развертывание Drupal 8 С Помощью Docker

В честь долгожданного Выпуск Друпала 8 сегодня я расскажу вам, как его установить с помощью Докер .



Развертывание Drupal 8 с помощью Docker

Сначала коротко, зачем это вообще делать, какие преимущества это дает:

  • Хостер независимый.

    Если вам необходимо перенести сайт на другой хостинг, это будет сделать гораздо проще, ведь по сути весь сайт представляет собой набор контейнеров, которым все равно, где они будут запущены.

  • Клонирование.

    Если вам необходимо создать новый экземпляр сайта, например для разработки или тестирования, то достаточно будет клонировать контейнеры.

  • Совместимость с серверной средой.

    Зачастую различия в версиях пакетов или отсутствие какого-либо расширения в разных средах приводят к неочевидным ошибкам.

    Использование одних и тех же контейнеров в разных средах помогает избежать этого.

  • Изоляция.

    Изоляция Docker полезна, когда у вас есть несколько сайтов или экземпляров сайтов на одном сервере (высокая нагрузка на один сайт не повлияет на другие).

    Хотя она несколько своеобразная

  • Оптимальная серверная среда.

    Ни для кого не секрет, что тот же nginx, php и mysql/mariadb нужно уметь оптимально настроить; в случае докера вы можете найти общедоступные контейнеры на докер-хаб , собранные другими людьми специально для вашей версии Drupal

  • Масштабирование.

    Каждый контейнер можно масштабировать как вертикально (добавлять ресурсы), так и горизонтально (клонировать и распределять нагрузку через балансировщик нагрузки).

Короткая заметка для новичков в Drupal: любой опытный друпалист (я работаю с Drupal уже 6 лет) знает, что гибкость и архитектурная красота Drupal достигается за счет производительности, поэтому все эти разговоры о необходимости для оптимизации, масштабирования и кэширования не оказалось ровного места.

Что ж, начнем.

Так как у восьмёрки нет нормальных модулей для интеграции с redis/memcached (для хранения внутреннего кеша) и лака (кэширование обратного прокси), среду будем строить без них, обойдемся всего двумя контейнерами: веб-сервером ( php + apache2) и базу данных (mariadb, она же форк mysql).

Для демонстрации мы запустим самый маленький дроплет (VPS) на DigitalOcean с Ubuntu 14.04 x64. Подключаемся к виртуальной машине по ssh под root; для простоты демонстрации мы отключим брандмауэр ufw по умолчанию, чтобы избежать его настройки:

  
  
  
  
  
  
  
   

root@drupal8-docker:~# ufw disable Firewall stopped and disabled on system startup

Установка докера:

root@drupal8-docker:~# wget -qO- https://get.docker.com/ | sh

Проверим, что всё в порядке:

root@drupal8-docker:~# docker -D info Containers: 0 Images: 0 Server Version: 1.9.1 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 0 Dirperm1 Supported: false Execution Driver: native-0.2 Logging Driver: json-file Kernel Version: 3.13.0-68-generic Operating System: Ubuntu 14.04.3 LTS CPUs: 1 Total Memory: 490 MiB Name: drupal8-docker ID: GUMM:PUBZ:VJOF:52B7:ZIEN:UCJC:4QA2:BSP5:UGSW:FGPV:AZY6:ASZD WARNING: No swap limit support

Здесь мы видим, что мы еще не запустили ни одного контейнера, не скачали ни одного образа, версии докера и т. д. Файловая система по умолчанию — АУФС , что позволяет Docker использовать управление версиями своих изображений в стиле Git. Те.

при обновлении образа вы не будете скачивать все с нуля, а будет скачан только новый слой.

Идем дальше, теперь нам нужно скачать наши изображения.

Если не указать абсолютный путь, то по умолчанию изображение будет искаться по адресу Hub.docker.com , скачать Официальное изображение МариадБ .

Поскольку мы не указываем тег (версию), используется самый последний тег.



root@drupal8-docker:~# docker pull mariadb

В выводе вы увидите, как загружаются все слои (версии) изображения:

Развертывание Drupal 8 с помощью Docker

Теперь скачайте Официальное изображение Drupala , указывая нужный нам тег.

К Докерфайл , из которого собрано изображение, мы видим, что за основу взято изображение официальный образ PHP 5.6 с Apache , затем устанавливаются дополнительные библиотеки и расширения PHP, такие как gd, pdo и opcache. Затем устанавливаются рекомендуемые настройки opcache и скачивается сам Drupal.

root@drupal8-docker:~# docker pull drupal:8.0.0

Давайте посмотрим на список докер-образов:

root@drupal8-docker:~# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE drupal 8.0.0 ddddc055c2c2 5 days ago 570.9 MB mariadb latest b8ba0befc716 6 days ago 302.1 MB

Они весят довольно много, поскольку оба образа созданы под управлением Debian Jessie с их системой пакетов APT, которая содержит множество тяжелых зависимостей.

Теперь запускаем контейнер с mariadb, ключ v(--volume), указываем докеру создать смонтированный раздел с узла хоста, где будут храниться данные базы данных, по умолчанию, если этого не сделать, данные будут храниться внутри контейнера и будет потеряно при пересборке контейнера (это может понадобиться для применения новых обновлений mariadb).

В ответ на выполнение команды отображается хеш (идентификатор) работающего контейнера.



root@drupal8-docker:~# docker run -e MYSQL_ROOT_PASSWORD=admin -e MYSQL_DATABASE=drupal8 -e MYSQL_USER=drupal8 -e MYSQL_PASSWORD=drupal8 -v mariadb:/var/lib/mysql -d --name mariadb mariadb 5a288bef768a000a28c0e482b8424007c606e8d0967703099f967ff6617ceb34

Теперь запускаем Drupal со ссылкой на только что запущенный mariadb и привязкой к порту 80. Ссылка — это по сути запись в /etc/hosts, указывающая на IP контейнера mariadb в виртуальной сети, созданной докером во время установки.



docker run --name drupal8 --link mariadb:mysql -p 80:80 -d drupal:8.0.0

Проверьте docker ps, чтобы убедиться, что оба контейнера работают:

Развертывание Drupal 8 с помощью Docker

Заходим на свой IP-адрес в браузере и видим установщик Drupal:

Развертывание Drupal 8 с помощью Docker

Проблем с установкой возникнуть не должно, единственное, на странице настроек базы данных нужно вместо хоста указать mysql вместо localhost; мы создали привязку, используя это имя выше.



Развертывание Drupal 8 с помощью Docker

Ура! Наслаждаемся только что установленным Drupal.

Развертывание Drupal 8 с помощью Docker

Теги: #drupal #drupal 8 #docker #веб-разработка #CMS #разработка сайтов #drupal

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.