Архитектура и Развертывание
Проект имеет модульную архитектуру и полностью упакован в контейнеры, что делает его развертывание предсказуемым и легко масштабируемым.
🏗 Архитектура компонентов
В основе лежат два главных компонента, работающих в единой Docker-сети и скрытых за обратным прокси:
- Контейнер Nginx (Web Server): * Принимает все входящие HTTP/HTTPS запросы.
- Отдает статические файлы сгенерированной документации MkDocs (по пути
/docs/). -
Перенаправляет (Reverse Proxy) все остальные запросы (главная страница, проекты, контакты) на контейнер с Flask.
-
Контейнер Flask (App Server):
- Обрабатывает динамические маршруты и подставляет нужный язык в HTML-шаблоны Jinja.
🚀 Процесс CI/CD (GitHub Actions)
Развертывание сайта полностью автоматизировано. При каждом push-коммите в ветку main запускается следующий Pipeline:
- Checkout & Setup: GitHub Actions клонирует репозиторий и устанавливает Python-окружение.
- Build Docs: Устанавливаются зависимости (включая плагины i18n) и выполняется команда
mkdocs build, которая генерирует статику документации в папкуsite/. - SCP Transfer: Свежий код и собранная статика копируются на сервер в Oracle Cloud по SSH.
- Docker Compose Rebuild: На сервере удаляется старый кэш и запускается команда
docker-compose up -d --build. Контейнеры пересобираются с новым кодом без даун-тайма.
💻 Локальный запуск (Для разработки)
Для развертывания проекта на локальной машине достаточно выполнить две команды.
Сборка документации (требуется установленный Python): ```bash pip install -r requirements.txt mkdocs build -f mkdocs-personal.yml