Разработка
Запуск локального стека с 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