Continuous Integration проекта YaMDB
В этом задании вы настроите Continuous Integration и Continuous Deployment для вашего проекта YaMDB: автоматический запуск тестов, обновление образов на Docker Hub и автоматический деплой на боевой сервер при пуше в ветку main.
Клонируйте репозиторий yamdb_final и скопируйте в него проект YaMDB.
Добавьте в docker-compose третий контейнер с настроенным nginx.
Создайте докер-файл для
nginx, в качестве базового образа возьмите
официальный образ nginx, внимательно прочитайте документацию к нему.
Из контейнера с Django-проектом прокиньте наружу папку со статикой
Добавьте volume статики к контейнеру nginx.
В документации к образу посмотрите, как настроить конфигурацию nginx: там описаны разные варианты.
Настройки конфига:
- Настроить nginx так, чтобы он раздавал статику, указать путь к статике в конфиге.
- Проксировать все запросы из nginx на нужный порт контейнера с Django-проектом.
- Допишите файл docker-compose.yaml так, чтобы он разворачивал полноценное приложение на пустом сервере.
Создайте workflow для репозитория yamdb_final на GitHub Actions. Опишите workflow в файле yamdb.yaml.
В workflow должны быть четыре job:
- Проверка кода на соответствие стандарту PEP8 (с помощью пакета flake8) и запуск pytest из репозитория
yamdb_final. - Сборка и доставка докер-образов на Docker Hub.
- Автоматический деплой проекта на боевой сервер.
- Отправка уведомления в Telegram.
Добавьте в файл README.md бейдж, показывающий статус вашего workflow.
Чек-лист для самопроверки
- В файл docker-compose.yaml добавлен третий контейнер с сервисом nginx. Сервер настроен для работы со статикой и проксированием запросов на gunicorn.
- Настроены volumes для базы данных.
- Для работы nginx настроен volume для статики.
- Директория .github/workflows содержит корректный workflow в файле yamdb_workflow.yaml.
- Проект развернут и запущен на боевом сервере.
- При пуше в main код автоматически деплоится на сервер.
- В репозитории в файле README.md установлен бейдж о статусе работы workflow.