Drupal 8 в Docker (Docker-compose)

Сотни авторов по интернету пишут о преимущестах контейнеризации процесса разработки будь то docker или vagrant.

Я пользовался вагрантом на нескольких проектах. В принципе было удобно, но меня смущал тот факт что у меня паралелльно запущена полноценная ОС! Которая к тому-же весит около 10-15Гб. Было это в те времена, когда SSD еще были не столь доступными. Стоит присмотреться к докеру, тк каждый контейнер представляет собой отдельно запущенную ОС с софтом. Контейнеры линкуются между собой портами и тем самым мы получаем рабочую систему для разработки.

До этого времени я использовал докер для приложений на питоне и друпал 7. В данной статье рассматривается возможность запустить проект на друпал 8 под докером с установкой всех необходимых для начальной работы программ. В сети есть куча докер-композ для друпал 8. Но брать их и начать использовать это не мой путь. Мне интересно было разобраться в работе докера и самому собрать удобный для меня конфиг.

Я сначала попробовал все что было в сети, но меня не устроило по каким-то причинам. Конечно, сравниться с конфига woodby сложно, но когда функционал не должен быть избыточным и функционал варьируется от проекта к проекту.

Данный материал я буду настраивать и тестировать под виртуальной машиной в Virtualbox. Тк, на локалке у меня уже все настроенно.

Я взял за основу дистрибутив Lubuntu с LXQT, потому что он легковесный.

Для начала нам понадобится PHP7.2 с дополнительными чтоб запустить Composer.

sudo apt-get install php7.2 php7.2-cli php7.2-common php7.2-curl php7.2-xml php7.2-gd php7.2-mbstring

Установка Composer. Его можно установить как локально, для каждого проекта в зависимости от нужной версии. Так и глобально.

Больше о композере и о его установке можно прочитать по ссылке

https://getcomposer.org/download/

Следуем совету по установке в текущую директорию:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

php -r "unlink('composer-setup.php');"

Теперь проверим установился ли композер:

$ composer --version

Можно убедиться что он установлен и работает.

Далее нам нужно установить Docker и Docker-compose.

По докеру следуем по инструкции с официального сайта.

https://docs.docker.com/install/linux/docker-ce/ubuntu/

$ sudo apt-get update

$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \

"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

После установки в подключаниях появится подключение с именем docker0.

Проверим что докер установлен.

$ docker --version

Теперь установим Docker-compose согласно инструкции с официального сайта:

https://docs.docker.com/compose/install/

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Проверяем команду чтоб удостовериться что все работает.

$ docker-compose --version

Добавляем пользователя в группу docker чтоб не запускать через sudo. По ссылке больше информации https://docs.docker.com/install/linux/linux-postinstall/

$ sudo usermod -aG docker $USER
$ newgrp docker

Клонируем репозиторий себе на локалку

https://github.com/onesixromcom/docker_drupal8

$ git clone https://github.com/onesixromcom/docker_drupal8.git

Для развертывания друпала я выбрал пакет drupal-composer.
Страница проекта https://github.com/drupal-composer/drupal-project

Из папки репозитория запускаем:

$ cd docker_drupal8
$ composer create-project drupal-composer/drupal-project:8.x-dev docroot --stability dev –verbose

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

$ mkdir ./docroot/config/sync -p

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

$ docker-compose up -d --build

Проверяем что все контейнеры работают и сайт доступен по адресу: http://127.0.0.1:3000/

Хост базы указываем db, так как назван контейнер в файле docker-compose.yml

База database.
Пользователь drupal.
Пароль drupal.

Успешная установка! Данные команды были проверены под чистой виртуалкой. Пишите в комменты при возникновении проблем.

Комментарии

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