Контейнеризированный WordPress с CI/CD

Project by kondratev.it@gmail.com

1. Описание проекта

Проект представляет собой production-подобное окружение для запуска WordPress с использованием Docker Compose.
Реализованы контейнеризация, разделение сервисов и автоматический деплой через GitLab CI/CD.
Цель проекта — продемонстрировать навыки DevOps: работа с Docker, сетями, volume, CI/CD и веб-сервером Nginx.

2. Архитектура решения

Проект реализует 3-уровневую архитектуру:
– Frontend: Nginx (принимает HTTP-запросы)
– Backend: WordPress (PHP-FPM)
– Database: MariaDB

Взаимодействие:
Клиент → Nginx → PHP-FPM → MariaDB

3. Используемые технологии

– Docker / Docker Compose
– Nginx
– WordPress (PHP-FPM)
– MariaDB
– GitLab CI/CD
– Linux

4. Docker Compose структура

Сервисы:
– nginx: веб-сервер, порт 80
– wordpress: приложение, порт 9000 (внутренний)
– db: база данных MariaDB

Volumes:
– wordpress_data
– db_data

Network:
– wordpress-project_default

5. Сетевое взаимодействие

Все контейнеры находятся в одной bridge-сети.
Обращение между сервисами происходит по DNS-именам:
– nginx → wordpress:9000
– wordpress → db:3306

6. Хранение данных

Данные сохраняются в Docker volumes:
– WordPress файлы: /var/www/html
– База данных: /var/lib/mysql

Удаление volume приводит к полной потере данных.

7. CI/CD процесс

Pipeline состоит из этапов:
1. validate — проверка docker-compose
2. lint-nginx — проверка конфигурации nginx
3. deploy — деплой приложения

Используется GitLab Runner с доступом к Docker (Docker outside of Docker).

8. Процесс деплоя

1. Push в репозиторий
2. Запуск pipeline
3. Проверка конфигурации
4. Деплой контейнеров
5. Приложение доступно по http://localhost

9. Поток обработки запроса

1. Пользователь обращается к серверу
2. Nginx принимает запрос
3. PHP-запрос передается в WordPress (php-fpm)
4. WordPress обращается к базе данных
5. Ответ возвращается пользователю

10. Текущее состояние

После деплоя WordPress находится в состоянии первичной установки.
При открытии сайта происходит редирект на /wp-admin/install.php.

11. Безопасность и best practices

– Изоляция сервисов через Docker
– Использование volumes для хранения данных
– Отсутствие прямого доступа к базе извне
– Разделение ролей сервисов
– Возможность внедрения secrets и HTTPS

12. Возможности для развития

– Добавление HTTPS (Let’s Encrypt)
– Использование Docker Secrets
– Автоматическая установка WordPress
– Мониторинг (Prometheus, Grafana)
– Логирование (ELK stack)
– Blue/Green деплой

13. Вывод

Проект демонстрирует практические навыки DevOps:
– Контейнеризация приложений
– Построение архитектуры
– Настройка CI/CD
– Работа с сетями и хранением данных

Проект может быть использован как база для production-системы.

Comments

One response to “Контейнеризированный WordPress с CI/CD”

  1. A WordPress Commenter Avatar

    Hi, this is a comment.
    To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.
    Commenter avatars come from Gravatar.

Leave a Reply

Your email address will not be published. Required fields are marked *