Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Docker + Nginx + Python

В рамках создания проекта изучено:

docker

  • Dockerfile — как создавать собственные Docker-образы с нужными зависимостями
  • Docker Compose — базовое знакомство с составлением docker-compose.yaml
  • Volumes — монтирование директорий с хоста внутрь контейнера для передачи данных
  • Ports — проброс портов между хостом и контейнером
  • Entrypoint — точки входа в контейнер и команды по умолчанию

python

Освежил память в работе с python, написал с нуля скрипт опираясь на прошлые задачи. Использовал библиотеки yaml и модуль Template для парсинга и генерации файлов. Осуществлял работу с файлами и дерикториями с помощью библиотек os и shutil Написал небольшую валидацию входных данных под условные рамки задачи.

Как работает проект

Docker Compose запускает процесс:

  • собирает образ из Dockerfile
  • пробрасыввет порт хост:контейнер
  • монтирует config директорию

Dockerfile подготавливает образ:

  • берет базовый образ nginx:alpine
  • устанавливает python и библиотеку pyyaml(для yaml)
  • копирует скрипты, шаблоны и конфига
  • делает entrypoint.sh исполняемым

entrypoint.sh запускает инициализацию

  • запускает главный скрипт generator.py
  • проверяет валидность конфигурации nginx

generator.py генерирует конфиги

  • парсит config/sites.yaml с описанием сайтов
  • валидирует данные
  • на основе шаблонов генерирует nginx конфиги и html страницы для каждого сайта
  • удаляет старые конфиги и html файлы которые не используются в sites.yaml

Как запустить проект

Требования:

  • Docker
  • Docker Compose

Запуск:

docker compose up -d --build

Просмотр логов:

docker compose logs -f web_server

Остановка контейнера:

docker compose down

Внутри контейнера доступен сайт test.su на 80 порту

Для локального тестирования добавляем себе на хост в hosts

127.0.0.1 test.cu

И получаем в браузере или через curl -v сгенерированную html страницу

Как расширять пул сайтов

Добавляем необходимые параметры для нового сайта в config/sites.yaml Перезапускаем контейнер

docker compose restart

или

запускаем скрипт в контейнере

docker exec nginx_automated python3 /app/generator.py

и перезагружаем nginx

docker exec nginx_automated nginx -s reload

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages