Подготовка рабочей среды – Docker4Drupal
Размышляя о том с чего начать установку ядра Drupal я думаю что важно затронуть рабочую среду: где каждый из нас будет разрабатывать, кто-то работает под Windows или macOS, также есть множество дистрибутивов Linux.
Так как я работаю с Kubuntu, то в первую очередь данный пример приведу именно с этой операционной системой.
Если вам будет интересно разобрать на примерах установку для различных инструментов как DDEV, XAMPP, MAMP или OSPanel и др. то можно оставить комментарии под этой статьей или видео на YouTube, запланирую создать отдельные видео по этой теме.
Пока на данный момент будем разбираться на примере установки в среде Linux на Kubuntu с помощью Docker.
Docker
Как правило неважно на какой ОС вы привыкли работать, docker доступен для установки на большинстве из них.
Для тех кто не имел еще опыта работать с Docker - придется гуглить и разбираться подробнее в этом инструменте или же использовать среды для локальной веб-разработки как OSPanel, XAMPP, MAMP и др.
Docker4Drupal
Что такое - Docker4Drupal?
По ссылке ниже можно найти подробную информацию об этом инструменте:
https://github.com/wodby/docker4drupal
Docker4Drupal is a set of docker images optimized for Drupal. Use compose.yml file from the latest stable release to spin up local environment on Linux, Mac OS X and Windows.
Собственно это набор готовых для использования docker images для ваших проектов.
Есть целый ряд сборок для разных типов проектов - Docker4X projects:
https://wodby.com/docs/1.0/docker4x/
Docker4Drupal
Docker4WordPress
Docker4PHP
Docker4Ruby
Docker4Python
Название для проекта - Dlog
Название проекта - это важная составляющая, которая в дальнейшем будет фигурировать как ключ ко множеству функций и названий классов в коде, я планирую использовать такое же именование что и было в курсе от Niklan.
Это не спроста - данный подход позволит избежать многих ошибок в будущем связанных с неправильным указанием префиксов для множества классов и методов, я сам сталкивался не раз с опечатками или неправильным указанием имени что приводило к многим часам поиска ошибок.
Никто не запрещает вам придумать своё собственное название для проекта, но тогда все риски вы берете на себя, из опыта могу рекомендовать пока следовать такому же примеру как и в курсе, хотя бы в начале своего обучения.
Создаем директорию для проекта - dlog.lan
На своём веб сервере я создам директорию - dlog.lan
В эту директорию необходимо закинуть файлы от Docker4Drupal (docker4drupal.tar.gz):
.env
compose.override.yml
compose.yml
Makefile
traefik.yml
Настраиваем Docker4Drupal
В файле .env необходимо отредактировать секцию - PROJECT SETTINGS:
.env
### PROJECT SETTINGS
PROJECT_NAME=dlog
PROJECT_BASE_URL=dlog.lan
PROJECT_PORT=80
DB_NAME=dlog
DB_USER=dlog
DB_PASSWORD=dlog
DB_ROOT_PASSWORD=password
DB_HOST=mariadb
DB_PORT=3306
DB_DRIVER=mysql
В зависимости от вашей OS нужно найти файл хостов - hosts и прописать там локальные IP для нашего проекта:
hosts
127.0.0.1 dlog.lan
127.0.0.1 pma.dlog.lan
pma.dlog.lan - это адрес по которому будет доступен phpMyAdmin.
compose.override.yml
В файле compose.override.yml переопределяем значения которые нам необходимы из compose.yml файла:
compose.override.yml
services:
mariadb:
volumes:
- /home/alex/.docker-databases/tutorial/dlog:/var/lib/mysql
php:
volumes:
- ./:/var/www/html
crond:
volumes:
- ./:/var/www/html
nginx:
volumes:
- ./:/var/www/html
pma:
image: phpmyadmin/phpmyadmin
container_name: "${PROJECT_NAME}_pma"
environment:
PMA_HOST: $DB_HOST
PMA_USER: $DB_USER
PMA_PASSWORD: $DB_PASSWORD
UPLOAD_LIMIT: 1G
labels:
- "traefik.http.routers.${PROJECT_NAME}_pma.rule=Host(`pma.${PROJECT_BASE_URL}`)"
volumes:
codebase:
Нужно обратить внимание на сервис mariadb:
mariadb - это наша база данных, с которой будем работать, в volumes указана локальная директория, в моём случае это
/home/alex/.docker-databases/tutorial/dlog
при удалении контейнеров или их перезагрузки - сама БД физически остается на вашем компьютере и при следующих запусках, будет подтягиваться в контейнер.
Таким образом у вас всегда актуальная версия базы будет хранится на компьютере.
Запускаем Docker контейнеры нашего проекта
docker compose up -d
В моём случае при первом запуске получаю следующие сообщения:
[+] Running 7/8
⠿ Network dloglan_default Created 0.1s
⠿ Container dlog_pma Started 0.7s
⠿ Container dlog_mailhog Started 0.6s
⠿ Container dlog_crond Started 0.6s
⠿ Container dlog_mariadb Started 0.6s
⠿ Container dlog_traefik Starting 0.9s
⠿ Container dlog_php Started 0.7s
⠿ Container dlog_nginx Started 0.9s
Error response from daemon: driver failed programming external connectivity on endpoint dlog_traefik (34de01bf8aa078f3b6dec2eb3383afc5a7450b062a0ba9bd22049c6186bb57dd): failed to bind port 0.0.0.0:80/tcp: Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use
где можно выделить данную ошибку:
failed to bind port 0.0.0.0:80/tcp: Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use
Если на хост системе, как в моём случае, установлен локальный сервер Apache/Nginx то он занимаем 80 порт, по этому чтобы избежать данной ошибки - перед запуском контейнеров нужно отключить сам веб сервер:
sudo service apache2 stop
или
sudo service nginx stop
Останавливаем контейнеры:
docker compose down
и запускаем снова:
docker compose up -d
если больше никаких ошибок не возникает, то получаем примерно такую картину
[+] Running 8/8
⠿ Network dloglan_default Created 0.1s
⠿ Container dlog_crond Running 0.0s
⠿ Container dlog_php Running 0.0s
⠿ Container dlog_mailhog Running 0.0s
⠿ Container dlog_pma Running 0.0s
⠿ Container dlog_nginx Running 0.0s
⠿ Container dlog_mariadb Running 0.0s
⠿ Container dlog_traefik Started 0.0s

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