Как запустить WordPress с помощью Docker Compose

  • Михаил
  • 12 мин. на прочтение
  • 65
  • 23 Mar 2023
  • 23 Mar 2023

WordPress — это бесплатная система управления контентом (CMS) с открытым исходным кодом , построенная на базе данных MySQL с обработкой PHP . Благодаря расширяемой архитектуре плагинов и системе шаблонов большую часть администрирования можно выполнять через веб-интерфейс. Это причина, по которой WordPress является популярным выбором при создании различных типов веб-сайтов, от блогов до страниц продуктов и сайтов электронной коммерции.

Запуск WordPress обычно включает установку стека LAMP (Linux, Apache, MySQL и PHP) или LEMP (Linux, Nginx, MySQL и PHP), что может занять много времени. Однако с помощью таких инструментов, как Docker и Docker Compose , вы можете упростить процесс настройки предпочтительного стека и установки WordPress. Вместо ручной установки отдельных компонентов вы можете использовать образы , которые стандартизируют такие вещи, как библиотеки, файлы конфигурации и переменные среды. Затем запустите эти образы в контейнерах, изолированные процессы, работающие в общей операционной системе. Кроме того, с помощью Compose вы можете координировать несколько контейнеров — например, приложение и базу данных — для взаимодействия друг с другом.

В этом руководстве мы запустим только WordPress подразумевая, что сервер Mysql и Nginx уже запущены и настроены, а как-же уже работает и настроен  Let’s Encrypt для защиты нового сайта, получая сертификаты TLS/SSL для домена, который вы хотите связать с вашим сайтом.

Начинаем с подготовки папки для размещения нашего приложения.

mkdir /opt/wordpress

Создадим на сервере MySql базу для будущего сайта test.domain.ru

Далее в созданной папке создадим файл docker-compose.yml

vi docker-compose.yml

с содержимым

version: '3.3'
services:
 wordpress:
   image: wordpress
   restart: always
   ports:
     - 8090:80
   environment:
     WORDPRESS_DB_HOST: "172.17.100.3"
     WORDPRESS_DB_USER: "root"
     WORDPRESS_DB_PASSWORD: "P@ssw0rd"
     WORDPRESS_DB_NAME: "test.domain.ru"
   volumes:
     - test.domain.ru:/var/www/html
volumes:
   test.domain.ru:

Запускаем на выполнение и ждем запуска.

sudo docker-compose up -d

Проверяем результат

sudo docker ps -a

 

Заходим браузером на http://172.17.100.3:8090

 

Настраиваем 

Пользуемся

Но нужно создать на nginx обратный прокси.

Создаем файл конфигурации test.domain.ru

vi /etc/nginx/conf.d/test.domain.ru.conf

С содержимым

server {
   listen 80;
   server_name test.domain.ru www.test.domain.ru;
   return 301 https://test.domain.ru$request_uri;
}
server {
   listen 443 ssl http2;
   server_name test.domain.ru www.test.domain.ru;
   location / {
       proxy_pass http://172.17.100.3:8099;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto https;
   }
   proxy_connect_timeout 900;
   proxy_send_timeout 900;
   proxy_read_timeout 900;
   send_timeout 900;
   access_log /var/log/nginx/localhost-access.log;
   error_log /var/log/nginx/localhost-error.log;
   ssl_certificate /etc/nginx/cert/test.domain.ru/fullchain.pem;
   ssl_certificate_key /etc/nginx/cert/test.domain.ru/privkey.pem;
   ssl_trusted_certificate /etc/nginx/cert/test.domain.ru/chain.pem;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_prefer_server_ciphers on;
}

Перезапускаем nginx

systemctl restart nginx

В этом руководстве вы использовали Docker Compose для создания установки WordPress с веб-сервером Nginx.