Этот вопрос проверяет понимание Docker Compose — инструмента для определения и управления многоконтейнерными приложениями Docker, что необходимо для автоматизации развертывания сложных сервисов.
Docker Compose — это инструмент командной строки, который использует декларативный подход для управления несколькими контейнерами Docker как единым приложением. Вместо того чтобы вручную создавать сети, тома и запускать каждый контейнер с длинными списками параметров, разработчик описывает всю инфраструктуру в YAML-файле. Docker Compose затем читает этот файл и автоматически создаёт и запускает все определённые сервисы, правильно настраивая связи между ними.
Основной файл конфигурации называется docker-compose.yml. В нём определяются:
Рассмотрим простое веб-приложение на Node.js, которое использует базу данных PostgreSQL и Redis для кэширования. Вместо трёх отдельных команд docker run мы создаём один файл.
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgres://user:pass@db:5432/mydb
- REDIS_URL=redis://cache:6379
depends_on:
- db
- cache
db:
image: postgres:14
environment:
POSTGRES_PASSWORD: pass
volumes:
- db_data:/var/lib/postgresql/data
cache:
image: redis:7-alpine
volumes:
db_data:В этом примере мы определяем три сервиса. Сервис web собирается из Dockerfile в текущей директории, пробрасывает порт и зависит от запуска сервисов db и cache. Docker Compose автоматически создаст общую сеть, в которой контейнеры смогут обращаться друг к другу по имени сервиса (например, db), и том для хранения данных PostgreSQL.
docker-compose up — создаёт и запускает все сервисы. Флаг -d запускает в фоновом режиме.docker-compose down — останавливает и удаляет контейнеры, сети, тома (созданные командой up).docker-compose ps — показывает статус запущенных сервисов.docker-compose logs — выводит логи от всех сервисов или конкретного.docker-compose exec <service> <command> — выполняет команду внутри запущенного контейнера сервиса.Этот инструмент идеально подходит для локальной разработки, так как позволяет легко воспроизвести продакшен-подобное окружение на машине разработчика. Он также часто используется на staging-серверах и для CI/CD пайплайнов, где нужно поднять тестовое окружение.
Вывод: Docker Compose стоит применять, когда ваше приложение состоит из нескольких взаимосвязанных контейнеров (микросервисы, база данных, брокер сообщений и т.д.), и вам нужен простой, стандартизированный способ описания, запуска и управления всей этой инфраструктурой как одним целым, особенно на этапах разработки, тестирования и демонстрации.