Как быстро развернуть WordPress как контейнер Docker

  • Михаил
  • 12 мин. на прочтение
  • 177
  • 11 Jul 2022
  • 11 Jul 2022

WordPress — самая популярная система управления контентом. Он написан на PHP, хранит данные в базе данных MySQL и обычно работает за веб-сервером Apache. Эти зависимости добавляют к вашей системе несколько пакетов, и их сложно поддерживать с течением времени. Вот как быстро запустить установку WordPress в контейнере с помощью официального Образ Docker.

Начиная

Для запуска WordPress в Docker требуются два отдельных контейнера: веб-контейнер, в котором работают Apache и PHP, и контейнер базы данных, в котором размещается MySQL. Вы также должны настроить тома Docker для каталогов данных WordPress. В них хранятся ваши файлы конфигурации и загруженные медиафайлы, поэтому они сохраняются при перезапуске контейнера.

Прежде чем продолжить, убедитесь, что у вас установлены Docker и Docker Compose. Хотя вы можете использовать Docker CLI самостоятельно, Compose упрощает определение двух служб, их зависимостей и ваших томов. Вы сможете вызвать весь стек с помощью одной команды.

Базовые изображения

Официальный образ WordPress Docker доступен во многих различных вариантах с тегами. Они охватывают спектр доступных версий WordPress и PHP. Если вы используете последний тег, вы получите текущую версию WordPress с новейшим выпуском PHP.

Для большего контроля над развертыванием используйте определенную версию WordPress и PHP. Вот несколько примеров:

  • wordpress: 5.7 — WordPress 5.7 с последней версией PHP.
  • wordpress: php7.4 — PHP 7.4 с последней версией WordPress.
  • wordpress: 5.7-php7.4 — WordPress 5.7 с PHP 5.4.

Исчерпывающий список поддерживаемых тегов предлагается на Докер Хаб. Помимо поддержки закрепления версий, варианты изображений также доступны для Apache, FPM и Alpine.

Изображения поставляются с предварительно настроенными используемыми настройками по умолчанию. Вы можете добавить свои собственные настройки php.ini, скопировав совместимый файл в каталог $ PHP_INI_DIR / conf.d внутри контейнера WordPress.

 

Развертывание вашего стека

Создайте новый каталог для своего сайта, затем добавьте файл docker-compose.yml. Вставьте следующий контент:

версия: «3» службы: wordpress: изображение: wordpress: 5.7-php7.4 перезапуск: если не остановлены порты: — 80 среда: WORDPRESS_DB_HOST: mysql WORDPRESS_DB_USER: имя пользователя WORDPRESS_DB_PASSWORD: пароль WORDPRESS_DB_NAME: тома wordpress: — wordpress: / var / www / html mysql: image: mysql: 5.7 перезапуск: среда: MYSQL_DATABASE: wordpress MYSQL_USER: имя пользователя MYSQL_PASSWORD: пароль MYSQL_RANDOM_ROOT_PASSWORD: «1» тома: — mysql: / var / lib / mysql volume: wordpress: mysql:

 

Этот файл Compose определяет минимальный стек с необходимыми службами WordPress и MySQL. Подключение к базе данных настраивается с использованием переменных среды. Вы должны изменить имя пользователя и пароль базы данных, чтобы защитить собственные значения. Не забудьте применить изменения к обоим определениям служб.

Службы настроены на автоматический перезапуск, если они не были остановлены вручную. Это гарантирует, что ваш сайт автоматически восстановится после перезагрузки хост-системы.

Весь установочный каталог WordPress монтируется в том. Использование этого подхода гарантирует, что весь ваш контент WordPress сохраняется вне контейнера, включая конфигурацию, темы, плагины и загрузки. Он также позволяет использовать самообновление WordPress из панели администратора. Если вы смонтировали только каталоги данных в том, любые изменения источника, примененные средством самообновления, будут потеряны после перезапуска контейнера.

 

Разверните стек, запустив docker-compose up -d. Вы сможете войти в WordPress, посетив http: // localhost в своем браузере. Если вы видите сообщение «Ошибка при установке соединения с базой данных», подождите несколько секунд, прежде чем повторить попытку. Подготовка базы данных при первом запуске может занять несколько секунд.

Щелкните стандартный мастер установки WordPress, чтобы настроить свой сайт. Вам нужно будет настроить учетную запись начального администратора. Эти учетные данные должны отличаться от учетных данных вашей базы данных MySQL. Когда вы закончите, появится форма входа в WordPress. Используйте свою новую учетную запись администратора для входа в панель администратора.

Следующие шаги

Ваша установка WordPress теперь готова к использованию. Добавляйте посты, страницы, темы и плагины с помощью интерфейса администратора, как при установке WordPress с нуля.

Рекомендуется выполнить несколько основных шагов по усилению безопасности, чтобы снизить риск атаки на ваш сайт. Вы также должны убедиться, что у вас есть процедура резервного копирования. Это должно охватывать базу данных MySQL и ваш каталог загрузок WordPress, wp-content.

Конфигурация с помощью Docker Secrets

Использование переменных среды для настройки подходит для локального использования. Также поддерживаются секреты Docker, что обеспечивает большую безопасность в средах, к которым могут получить доступ другие сотрудники. Определите секреты в своем файле Compose и замените такие переменные, как WORDPRESS_DB_PASSWORD на WORDPRESS_DB_PASSWORD_FILE. WordPress загрузит значение переменной из секретного файла, который внедряет Docker.

службы: wordpress: среда: WORDPRESS_DB_PASSWORD_FILE: / run / secrets / WORDPRESS_DB_PASSWORD секреты: — WORDPRESS_DB_PASSWORD секреты: WORDPRESS_DB_PASSWORD: файл: ./db_password

Добавьте свой пароль в файл db_password в вашем рабочем каталоге. Он будет доступен в контейнере как / run / secrets / WORDPRESS_DB_PASSWORD. WordPress проинструктирован прочитать этот файл, чтобы определить окончательный пароль базы данных.

Добавление собственного сайта

Вышеупомянутые шаги приводят к новой установке WordPress, готовой к интерактивной настройке через центр администрирования. Вы можете снабдить свой контейнер набором тем и плагинов по умолчанию, установив их в каталоги / var / www / html / wp-content / themes и / var / www / html / wp-content / plugins.

Этот метод также поможет вам создать собственный образ Docker для вашего сайта. Используйте официальный образ WordPress в качестве основы и скопируйте ресурсы своего сайта в соответствующие каталоги. Вот пример того, как вы можете упаковать настраиваемую тему как готовое к использованию изображение:

ИЗ wordpress: 5.7-php7.4-apache КОПИЯ ./theme/ / var / www / html / wp-content / themes / example-theme /

Ваша тема будет доступна в каждом запускаемом вами контейнере. Однако этот метод не включает тему автоматически. Для этого вам понадобится третья служба, использующая образ WordPress CLI.

services: wpcli: image: wordpress: cli-2-php7.4 среда: WORDPRESS_DB_HOST: mysql WORDPRESS_DB_USER: имя пользователя WORDPRESS_DB_PASSWORD: пароль WORDPRESS_DB_NAME: wordpress volume_from: — wordpress: rw

Контейнеру CLI необходим доступ к переменным среды и томам, доступным для обычного веб-контейнера. Переменные среды должны быть продублированы, если вы не извлекаете их в повторно используемый раздел YAML, тогда как тома можно смонтировать с помощью volume_from.

Теперь вы можете использовать Docker Compose, чтобы завершить установку WordPress и включить свою тему:

docker-compose run wpcli core install —title = «My Site» —admin_user = admin —admin_password = changeme —admin_email=me@example.com —url = localhost —allow-root docker-compose run wpcli theme активировать тему-пример —allow-root

Эти шаги можно автоматизировать как часть процесса построения образа или конвейера непрерывной интеграции. Ты мог совершить final контейнер для создания автономного образа вашего сайта, готового для последующего использования.

Вывод

Использование WordPress с Docker позволяет избежать загрязнения вашего хост-компьютера и помочь вам разместить ваш сайт и его конфигурацию в контейнерах. Определение ваших сервисов как файла Docker Compose позволяет быстро запускать новые экземпляры и помогает сотрудникам начать работу.

Как только ваш стек будет запущен, текущее обслуживание будет похоже на обычную установку WordPress. Регулярно обновляйте WordPress, плагины и темы, а также заранее проверяйте наличие проблем с безопасностью.

Одна из служебных задач, связанных с Docker, — это обновление базового образа WordPress. Рекомендуется периодически загружать последний образ, чтобы не пропустить важные исправления для операционной системы. Запустите docker-compose up -d —pull, чтобы вытащить образ и перезапустить свои службы.