Деплой стартапа «Котики в мир»
Опирается на главы «От скрипта к приложению», «Docker», «Сети и веб-технологии» и «Базы данных».
Контекст проекта
Код в репозитории размещён не в main, а в ветках front_code и my_backend. Сначала необходимо разобраться в их содержимом и свести его вместе.
Моделируется ситуация присоединения к стартапу, в котором:
- Фронтенд-разработчик и бэкенд-разработчик оставили незавершённый код
- Необходимо интегрировать их наработки в рабочую систему
- Проект должен быть готов к промышленному деплою
Технические требования
1. Подготовка репозитория
- Привести Git-репозиторий в порядок
- Слить все рабочие ветки в
main - Организовать код в структурированные директории (frontend, backend, nginx)
2. Docker
- Создать отдельные Docker-образы для бэкенда и фронтенда
- Настроить взаимодействие через
compose.yaml(старое имяdocker-compose.ymlтакже читается) - Обеспечить сборку образов через
docker compose build
Требования к сдаче
1. Состояние репозитория
- Чистая ветка
main - Логичное разделение кода по директориям
- Рабочие Dockerfile для каждого сервиса
2. Запуск системы
- Фронтенд доступен на http://localhost
- Бэкенд отвечает на API-запросы
3. Архитектура
- Наружу опубликован только один порт, 80-й у Nginx. У остальных сервисов в
docker-compose.ymlотсутствует секцияports, присутствует толькоexpose(разница между ними разобрана в главе про Docker). - Проверка осуществляется следующим образом:
docker compose psпоказывает публикацию порта лишь у одного сервиса, аcurlна порт бэкенда с хоста не отвечает. - Между собой сервисы обращаются по именам, которые Compose назначает в созданной им сети, а не по адресам, прописанным вручную.