Ты сейчас смотришь на приложение с микросервисной архитектурой: два независимых бэкенда работают в отдельных контейнерах и не знают друг о друге. Flask API управляет задачами (Todos) и хранит их в PostgreSQL. .NET Notes API управляет заметками в памяти. nginx маршрутизирует запросы к нужному сервису по префиксу URL. Всё запускается одной командой — docker compose up.
Новая задача Flask API
Список задач Flask API
Загрузка...
Новая заметка .NET API
Список заметок .NET API
Загрузка...
Ключевые команды Docker Compose
Сборка и запуск
docker compose up -d --build
docker compose up --build # в терминале, с логами
docker compose up -d # без пересборки
Остановка и удаление
docker compose down
docker compose down -v # удалит и тома с данными
docker compose stop frontend # один сервис
Логи
docker compose logs -f
docker compose logs backend
docker compose logs --tail 20 frontend
Войти в сервис
docker compose exec backend bash
docker compose exec db psql -U user -d tododb
Управление
docker compose ps
docker compose restart backend
docker compose build --no-cache
Диагностика
docker compose top
docker compose config # итоговый конфиг
docker stats
Ключевые понятия
Service (сервис)
Каждый контейнер в
docker-compose.yml — отдельный сервис. У каждого своё имя, образ и настройки.Network (сеть)
Compose автоматически создаёт внутреннюю сеть. Сервисы находят друг друга по имени:
backend, db.Volume (том)
Именованное хранилище, которое переживает перезапуск контейнера. PostgreSQL хранит данные здесь.
depends_on
Порядок запуска: frontend ждёт backend, backend ждёт db. С
condition: service_healthy — дождётся healthcheck.