Назад к блогу

Как настроить сайт Drupal или WordPress локально с помощью Docker

2020-09-024 мин чтения

Эта статья не ставит целью дать объяснения инструментам, которые я использую для настройки сайтов Drupal/WordPress, я думаю, что информации доступно в интернете о них Docker, Traefik, Compose. Единственная цель этого поста — документировать процесс, которому я следую, поскольку он очень прост, и надеюсь, что он также поможет другим людям.

Предварительные требования: Прежде чем начать, вам понадобится:

  1. Установленный Docker.
  2. Базовые знания git.
  3. Знакомство с терминалом.
  4. Существующий репозиторий/кодовая база Drupal/WordPress. Если вы хотите попробовать чистую установку, пожалуйста, следуйте официальной документации ванильных установок с wodby.com, они проще этой. Ссылки: Drupal или WordPress

Шаги для Drupal 7/8/9:

  1. Создайте папку, где вы хотите хранить файлы вашего проекта. Имя папки важно, поскольку сеть будет создана на его основе. Выберите короткое и, по возможности, однословное имя. Имя также будет использоваться для URL. Для целей этого руководства я создам папку с именем d8base.
  2. Клонируйте репозиторий Docker4Drupal в папку, которую вы создали на шаге 1. Вы можете выполнить эту команду из терминала: git clone [email protected]:wodby/docker4drupal.git .
  3. Создайте новую папку и назовите ее web, внутри папки, которую вы создали на шаге 1. В файле docker-compose Nginx по умолчанию настроен на использование папки web в качестве корневого каталога сервера. Мы также клонируем нашу кодовую базу Drupal в эту папку.
  4. Удалите файл docker-compose.override.yml, и структура ваших файлов должна выглядеть так: Alt Text
  5. Откройте файлы в вашем предпочтительном IDE и отредактируйте файл .env. Строки, которые нам нужно обновить, это строки 7 и 8. В качестве имени проекта мы должны использовать то же имя, которое мы использовали для папки, созданной на шаге 1 (в моем случае d8base). В качестве URL проекта я использую имя папки, созданной на шаге 1, в качестве префикса и оставляю часть docker.localhost. Это просто мое предпочтение.
PROJECT_NAME=d8base
PROJECT_BASE_URL=d8base.docker.localhost
  1. Отредактируйте файл docker-compose.yml и внесите следующие изменения: *Закомментируйте все строки, связанные с traefik, поскольку мы позже создадим глобальный файл traefik.yml.
  2. Alt Text
    *Раскомментируйте строки, связанные с PhpMyAdmin (pma), чтобы мы могли импортировать нашу базу данных:Alt Text
  3. В папке web, созданной на шаге 3, клонируйте репозиторий вашей кодовой базы Drupal. Убедитесь, что код Drupal находится непосредственно в этой папке, а не в подпапке.
  4. В терминале, в папке, созданной на шаге 1, выполните следующую команду для запуска служб:
make up

Настройка Traefik

  1. Создайте новую папку, я рекомендую назвать ее 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, аналогично этому:
Alt Text

  1. В терминале выполните следующую команду в папке traefik:

docker-compose -f traefik.yml up -d

Шаги для WordPress

  1. Процесс такой же, как и для Drupal, единственное отличие заключается в шаге 2, где нам нужно клонировать Docker4Wordpress вместо этого.

ВАЖНО: Убедитесь, что эта строка не закомментирована: NGINX_SERVER_ROOT: /var/www/html/web

Примечания:

  1. Вы можете импортировать базу данных с http://pma.d8base.docker.localhost/ замените d8base на имя папки, созданной на шаге 1
  2. Ваш сайт должен быть доступен по адресу http://d8base.docker.localhost/ замените d8base на имя папки, созданной на шаге 1
  3. Убедитесь, что порт 80 вашей машины не используется никаким другим приложением/сайтом перед выполнением этого руководства.
  4. Drupal: Если вам нужно выполнить команды drush, composer или drupal console, выполните команду docker exec -it d8base_php /bin/bash и cd web замените d8base на имя папки, созданной на шаге 1
  5. Если вам нужно понизить версию composer до версии 1, выполните: composer self-update --1
  6. Возможно, вам потребуется отредактировать файл /etc/hosts и добавить запись, например: 127.0.0.1 d8base.docker.localhost
  7. ВАЖНО: Каждый раз при перезапуске docker вам нужно будет выполнить docker-compose -f traefik.yml up -d из папки traefik.
  8. 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',
);

Категории: