/ CI/CD & Docker — App 2
Docker Compose Demo

📝 Todo App

Три сервиса в одном стеке: Frontend · Backend · PostgreSQL

nginx :8080
Flask API :5002
.NET API :5003
PostgreSQL :5432 (shared)

Ты сейчас смотришь на приложение с микросервисной архитектурой: два независимых бэкенда работают в отдельных контейнерах и не знают друг о друге. 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.