Поиск по сайту:

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


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

Начиная

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

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

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

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

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

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

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

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

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

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

version: "3"

services:
  wordpress:
    image: wordpress:5.7-php7.4
    restart: unless-stopped
    ports:
      - 80
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_USER: username
      WORDPRESS_DB_PASSWORD: password
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress:/var/www/html
  mysql:
    image: mysql:5.7
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: username
      MYSQL_PASSWORD: password
      MYSQL_RANDOM_ROOT_PASSWORD: "1"
    volumes:
      - mysql:/var/lib/mysql

volumes:
  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

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

services:
  wordpress:
    environment:
     WORDPRESS_DB_PASSWORD_FILE: /run/secrets/WORDPRESS_DB_PASSWORD
    secrets:
     - WORDPRESS_DB_PASSWORD
secrets:
  WORDPRESS_DB_PASSWORD:
    file: ./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 в качестве основы и скопируйте ресурсы вашего сайта в соответствующие каталоги. Вот пример того, как вы можете упаковать пользовательскую тему в виде готового к использованию изображения:

FROM wordpress:5.7-php7.4-apache
COPY ./theme/ /var/www/html/wp-content/themes/example-theme/

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

services:
  wpcli:
    image: wordpress:cli-2-php7.4
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_USER: username
      WORDPRESS_DB_PASSWORD: password
      WORDPRESS_DB_NAME: wordpress
    volumes_from:
      - wordpress:rw

Контейнеру CLI требуется доступ к переменным среды и томам, доступным для обычного веб-контейнера. Переменные среды должны быть продублированы, если вы не извлекаете их в повторно используемый раздел YAML, тогда как тома можно монтировать с помощью volumes_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 activate example-theme --allow-root

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

Заключение

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

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

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




Все права защищены. © Linux-Console.net • 2019-2024