Author: devbro

  • Контейнеризированный 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-системы.