Перейти к содержанию

Разработка

Запуск локального стека с Docker Compose

Когда вы запускаете стек Docker Compose, по умолчанию используется localhost, с разными портами для каждого сервиса (бэкенд, фронтенд, adminer и т.д.).

При деплое на продакшн (или staging), каждый сервис будет развернут на разных поддоменах, например, api.example.com для бэкенда и dashboard.example.com для фронтенда.

notilog % docker compose watch

Теперь вы можете открыть браузер и взаимодействовать с этими URL:

  • Frontend, собранный с помощью Docker, с маршрутами на основе пути: http://localhost:5173
  • Backend, веб-API на основе JSON с OpenAPI: http://localhost:8000
  • Автоматическая интерактивная документация с помощью Swagger UI (от OpenAPI бэкенда): http://localhost:8000/docs
  • Adminer, веб-интерфейс для управления базой данных: http://localhost:8080
  • Traefik UI, чтобы увидеть, как прокси обрабатывает маршруты: http://localhost:8090

Примечание: первый запуск стека может занять некоторое время, так как бэкенд ожидает готовности базы данных и настраивает всё. Вы можете следить за логами для мониторинга.

Чтобы проверить логи, выполните (в другой терминальной сессии):

docker compose logs

Чтобы посмотреть логи конкретного сервиса, добавьте его имя, например:

docker compose logs backend

Локальная разработка

Файлы Docker Compose настроены так, чтобы каждый сервис был доступен на отдельном порту на localhost.

Для бэкенда и фронтенда используются те же порты, которые они бы использовали на локальных серверах разработки. Поэтому бэкенд доступен по адресу http://localhost:8000, а фронтенд — http://localhost:5173.

Таким образом, вы можете остановить сервис Docker Compose и запустить его локальный сервер разработки — всё продолжит работать, потому что используются те же порты.

Например, можно остановить фронтенд-сервис в Docker Compose:

docker compose stop frontend

А затем запустить локальный сервер разработки фронтенда:

cd frontend
npm run dev

Или можно остановить бэкенд-сервис в Docker Compose:

docker compose stop backend

И затем запустить локальный сервер разработки для бэкенда:

cd backend
fastapi dev app/main.py