Перейти к содержанию

Архитектура и Развертывание

Проект имеет модульную архитектуру и полностью упакован в контейнеры, что делает его развертывание предсказуемым и легко масштабируемым.

🏗 Архитектура компонентов

В основе лежат два главных компонента, работающих в единой Docker-сети и скрытых за обратным прокси:

  1. Контейнер Nginx (Web Server): * Принимает все входящие HTTP/HTTPS запросы.
  2. Отдает статические файлы сгенерированной документации MkDocs (по пути /docs/).
  3. Перенаправляет (Reverse Proxy) все остальные запросы (главная страница, проекты, контакты) на контейнер с Flask.

  4. Контейнер Flask (App Server):

  5. Обрабатывает динамические маршруты и подставляет нужный язык в HTML-шаблоны Jinja.

🚀 Процесс CI/CD (GitHub Actions)

Развертывание сайта полностью автоматизировано. При каждом push-коммите в ветку main запускается следующий Pipeline:

  1. Checkout & Setup: GitHub Actions клонирует репозиторий и устанавливает Python-окружение.
  2. Build Docs: Устанавливаются зависимости (включая плагины i18n) и выполняется команда mkdocs build, которая генерирует статику документации в папку site/.
  3. SCP Transfer: Свежий код и собранная статика копируются на сервер в Oracle Cloud по SSH.
  4. Docker Compose Rebuild: На сервере удаляется старый кэш и запускается команда docker-compose up -d --build. Контейнеры пересобираются с новым кодом без даун-тайма.

💻 Локальный запуск (Для разработки)

Для развертывания проекта на локальной машине достаточно выполнить две команды.

Сборка документации (требуется установленный Python): ```bash pip install -r requirements.txt mkdocs build -f mkdocs-personal.yml