Деплой стартапа «Котики в мир»

Опирается на главы «От скрипта к приложению», «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 назначает в созданной им сети, а не по адресам, прописанным вручную.

Ссылка на репозиторий