Как настроить сайт Drupal или WordPress локально с помощью Docker
2020-09-02•4 мин чтения
Эта статья не ставит целью дать объяснения инструментам, которые я использую для настройки сайтов Drupal/WordPress, я думаю, что информации доступно в интернете о них Docker, Traefik, Compose. Единственная цель этого поста — документировать процесс, которому я следую, поскольку он очень прост, и надеюсь, что он также поможет другим людям.
Предварительные требования: Прежде чем начать, вам понадобится:
- Установленный Docker.
- Базовые знания git.
- Знакомство с терминалом.
- Существующий репозиторий/кодовая база Drupal/WordPress. Если вы хотите попробовать чистую установку, пожалуйста, следуйте официальной документации ванильных установок с wodby.com, они проще этой. Ссылки: Drupal или WordPress
Шаги для Drupal 7/8/9:
- Создайте папку, где вы хотите хранить файлы вашего проекта. Имя папки важно, поскольку сеть будет создана на его основе. Выберите короткое и, по возможности, однословное имя. Имя также будет использоваться для URL. Для целей этого руководства я создам папку с именем d8base.
- Клонируйте репозиторий Docker4Drupal в папку, которую вы создали на шаге 1. Вы можете выполнить эту команду из терминала:
git clone [email protected]:wodby/docker4drupal.git .
- Создайте новую папку и назовите ее web, внутри папки, которую вы создали на шаге 1. В файле docker-compose Nginx по умолчанию настроен на использование папки web в качестве корневого каталога сервера. Мы также клонируем нашу кодовую базу Drupal в эту папку.
- Удалите файл docker-compose.override.yml, и структура ваших файлов должна выглядеть так:
- Откройте файлы в вашем предпочтительном IDE и отредактируйте файл .env. Строки, которые нам нужно обновить, это строки 7 и 8. В качестве имени проекта мы должны использовать то же имя, которое мы использовали для папки, созданной на шаге 1 (в моем случае d8base). В качестве URL проекта я использую имя папки, созданной на шаге 1, в качестве префикса и оставляю часть docker.localhost. Это просто мое предпочтение.
PROJECT_NAME=d8base
PROJECT_BASE_URL=d8base.docker.localhost
- Отредактируйте файл docker-compose.yml и внесите следующие изменения: *Закомментируйте все строки, связанные с traefik, поскольку мы позже создадим глобальный файл traefik.yml.
*Раскомментируйте строки, связанные с PhpMyAdmin (pma), чтобы мы могли импортировать нашу базу данных:- В папке web, созданной на шаге 3, клонируйте репозиторий вашей кодовой базы Drupal. Убедитесь, что код Drupal находится непосредственно в этой папке, а не в подпапке.
- В терминале, в папке, созданной на шаге 1, выполните следующую команду для запуска служб:
make up
Настройка Traefik
- Создайте новую папку, я рекомендую назвать ее traefik, а внутри нее создайте файл traefik.yml, и содержимое файла должно быть таким:
version: '3'
services:
traefik:
image: traefik:v2.0
command: --api.insecure=true --providers.docker
networks:
- d8base
ports:
- '80:80'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
d8base:
external:
name: d8base_default
Если у вас есть другие проекты, которые вам нужно настроить, вам просто нужно добавить их в traefik.yml, аналогично этому:
- В терминале выполните следующую команду в папке traefik:
docker-compose -f traefik.yml up -d
Шаги для WordPress
- Процесс такой же, как и для Drupal, единственное отличие заключается в шаге 2, где нам нужно клонировать Docker4Wordpress вместо этого.
ВАЖНО: Убедитесь, что эта строка не закомментирована: NGINX_SERVER_ROOT: /var/www/html/web
Примечания:
- Вы можете импортировать базу данных с http://pma.d8base.docker.localhost/ замените d8base на имя папки, созданной на шаге 1
- Ваш сайт должен быть доступен по адресу http://d8base.docker.localhost/ замените d8base на имя папки, созданной на шаге 1
- Убедитесь, что порт 80 вашей машины не используется никаким другим приложением/сайтом перед выполнением этого руководства.
- Drupal: Если вам нужно выполнить команды drush, composer или drupal console, выполните команду
docker exec -it d8base_php /bin/bash
иcd web
замените d8base на имя папки, созданной на шаге 1 - Если вам нужно понизить версию composer до версии 1, выполните:
composer self-update --1
- Возможно, вам потребуется отредактировать файл /etc/hosts и добавить запись, например:
127.0.0.1 d8base.docker.localhost
- ВАЖНО: Каждый раз при перезапуске docker вам нужно будет выполнить
docker-compose -f traefik.yml up -d
из папки traefik. - Drupal: Убедитесь, что информация о базе данных верна в вашем файле settings.php. Файл .env содержит эту информацию, и значения по умолчанию должны выглядеть так:
$databases['default']['default'] = array (
'database' => 'drupal',
'username' => 'drupal',
'password' => 'drupal',
'prefix' => '',
'host' => 'mariadb',
'port' => '3306',
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
);