Нужно помочь доделать небольшой проект для Яндекс Практикум с Docker
Вот само задание
В финальном задании спринта вам предстоит:
- настроить запуск проекта Kittygram в контейнерах;
- настроить автоматическое тестирование и деплой этого проекта на удалённый сервер.
При пуше в ветку main:
- проект должен тестироваться,
- в случае успешного прохождения тестов образы должны обновляться на Docker Hub,
- на сервере должны быть запущены контейнеры из обновлённых образов.
- Напишите Dockerfile для образа kittygram_backend. За основу можно взять Dockerfile для бэкенда Taski.
- Для создания образа kittygram_gateway используйте готовый Dockerfile из папки nginx/.
- Обновите конфигурацию Nginx и добавьте проксирование запросов для API и админки.
- Для создания контейнера фронтенда используйте готовый Dockerfile из папки frontend/.
- Настройте совместную работу контейнеров backend и db:
- Настройте Django для работы с PostgreSQL.
- Создайте файл .env для PostgreSQL и контейнера backend: впишите в него переменные для инициализации БД и связи с ней.
- Допишите docker-compose.yml, заготовленный в репозитории. В нём уже есть описание контейнеров, но его нужно расширить:
- добавьте volume для статических файлов админки и фронтенда,
- добавьте volume для хранения файлов, загруженных пользователями,
- подключите файл .env к контейнерам db и backend.
Напишите в файле .github/workflows/main.yml workflow, который будет:
- проверять код бэкенда в репозитории на соответствие PEP8;
- запускать тесты для фронтенда и бэкенда (тесты уже написаны);
- собирать образы проекта и отправлять их на Docker Hub (замените username на ваш логин на Docker Hub):
- username/kittygram_backend,
- username/kittygram_frontend,
- username/kittygram_gateway.
- обновлять образы на сервере и перезапускать приложение при помощи Docker Compose;
- выполнять команды для сборки статики в приложении бэкенда, переносить статику в volume; выполнять миграции;
- извещать вас в Telegram об успешном завершении деплоя.