Сергиев Посад
08:11 / МСК / переменная облачность +16°C

астройка локального окружения для разработки на основе Docker и WordPress

Скролл

В этой статье мы вместе с разработчиком We Wizards Константином Агафоновым подробно на практике разберемся, как настроить локальное окружение для разработки сайта на WordPress с помощью Docker (все примеры команд и кода приводятся для операционной системы Linux).

Docker — это платформа, которая позволяет упаковать в контейнер приложение со всем окружением и зависимостями, а затем доставить и запустить его в целевой системе. Похож на виртуальные машины (VirtualBox, WMvare), но работает по немного другим принципам. В этой статье мы не будем погружаться в теоретические тонкости или разбирать установку Docker на чистую систему. Предлагаю вам самостоятельно установить его по инструкции на официальном сайте. Также вам будут необходимы приложение Docker Compose (про его установку здесь), аккаунт на Github и настроенные ключи по инструкции.

Для начала создадим новый репозиторий на Github для конфигурации окружения. Для этой статьи я создаю публичный репозиторий, который будет доступен и после публикации статьи по ссылке.

Теперь клонируем только что созданный репозиторий в локальную папку:

На локальной системе в консоли переходим в папку, где необходимо создать локальную папку для разработки, и вводим команды:

> git clone git@github.com:konstantin-agafonov/docker_wordpress_local.git
> ls docker_wordpress_local

Заходим на публичный репозиторий образов для Docker и ищем образ, который содержит CMS WordPress:

Находим строку Example docker-compose.yml for wordpress: и копируем код, который идет после этой строки. В рабочей папке создаем файл с названием docker-compose.уml и вставляем в него скопированный код, заменив в первой строке значение 3.1 на 3.8:

Запускаем в консоли команду:

По завершении процесса переходим в браузере по URL http://localhost:8080 и видим стандартный интерфейс установки WordPress, и после установки получаем полностью рабочий сайт:

Здесь необходимо пояснить, что произошло. После команды docker compose up Docker скачал с hub.docker.com необходимые образы WordPress и MySQL (в конфигурационном файле docker-compose.уml за это отвечают строки wordpress: image: wordpress и db: image: mysql:5.7), а затем на их основе создал контейнеры и запустил их. Список запущенных контейнеров можно посмотреть по команде: 

Здесь мы имеем два контейнера: WordPress содержит исполняемые файлы CMS WordPress, MySQL содержит базу данных. Cтроки ports: - 8080:80 указывают Docker пробросить внутренний стандартный http-порт контейнера 80 наружу через порт 8080. Другими словами, при обращении извне контейнера на порт 8080 идет обращение внутрь контейнера на порт 80. Если эти строки убрать, то обратиться из браузера к WordPress извне мы не сможем.

Вы, наверное, заметили, что при установке WordPress пропускается стандартный шаг интерфейса установки, где предлагается ввести данные БД — название, имя пользователя и пароль. Это происходит потому что в конфигурации Docker уже зашиты эти данные. В разделе db: image: mysql:5.7 указаны переменные среды, содержащие доступ к БД:

 environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'

Эти же данные используются в разделе wordpress: image: wordpress:

 environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb

Работающий сайт на WordPress у нас есть, а как разрабатывать? Ведь для этого нам необходимо открыть папку темы WordPress в редакторе кода. Остановим контейнеры Docker командой:

> docker compose down

Сохраним текущее состояние репозитория в гите:

> git add -A
> git commit -m ‘docker-compose.уml версия 1’
> git push