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-системы.
Leave a Reply