Ответ
Docker Compose — это инструмент для декларативного описания и запуска приложений, состоящих из нескольких Docker-контейнеров. Он позволяет управлять всем стеком сервисов (например, веб-сервер, база данных, кэш) как единым целым с помощью одного YAML-файла и простых команд.
Основная идея — вместо ручного запуска каждого контейнера с множеством флагов (docker run ...), вы описываете всю конфигурацию в файле docker-compose.yml.
Ключевые преимущества:
- Единая конфигурация: Все сервисы, сети, тома и переменные окружения описаны в одном файле.
- Изолированное окружение: Compose автоматически создает общую сеть для всех сервисов, позволяя им взаимодействовать друг с другом по именам (например, сервис
webможет обратиться к сервисуdb). - Простота управления: Весь стек запускается одной командой (
docker-compose up) и останавливается другой (docker-compose down). - Воспроизводимость: Гарантирует, что окружение для разработки, тестирования и продакшена будет идентичным.
Пример docker-compose.yml для веб-приложения:
version: '3.8'
services:
# Сервис веб-сервера
web:
image: nginx:latest
ports:
- "8080:80" # Проброс порта 8080 хоста на порт 80 контейнера
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- app # Запустится после сервиса 'app'
# Сервис приложения (например, Python/Node.js)
app:
build: . # Собрать образ из Dockerfile в текущей директории
volumes:
- .:/app
environment:
- DATABASE_URL=postgres://user:password@db:5432/mydatabase
# Сервис базы данных
db:
image: postgres:13
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydatabase
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data: # Именованный том для сохранения данных БД