Ответ
docker-compose.yml — это YAML-файл конфигурации для Docker Compose, инструмента, который позволяет определять и управлять мультиконтейнерными приложениями Docker. Вместо запуска множества команд docker run с кучей флагов, вы описываете все сервисы, их настройки и связи в одном декларативном файле и управляете ими одной командой.
Базовый пример для веб-приложения (PHP + Nginx + MySQL):
version: '3.8'
services:
# Сервис веб-сервера
webserver:
image: nginx:alpine
ports:
- "8080:80" # Проброс порта localhost:8080 -> 80 в контейнере
volumes:
- ./src:/var/www/html # Монтирование кода проекта
- ./nginx.conf:/etc/nginx/nginx.conf:ro # Кастомная конфигурация Nginx
depends_on:
- app # Запускать после сервиса 'app'
# Сервис приложения (PHP-FPM)
app:
build: . # Собрать образ из Dockerfile в текущей директории
volumes:
- ./src:/var/www/html
environment:
DB_HOST: database
# Сервис базы данных
database:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: myapp
volumes:
- db_data:/var/lib/mysql # Сохранение данных в именованном томе
# Определение томов для хранения данных
volumes:
db_data:
Ключевые возможности:
- Запуск всего стека:
docker-compose up -dсоздаст и запустит все сервисы. - Управление:
docker-compose downостановит и удалит контейнеры. - Просмотр логов:
docker-compose logs -f app. - Переменные окружения: Можно выносить в отдельный файл
.env. - Сети: Автоматически создаётся изолированная сеть для сервисов, они могут обращаться друг к другу по имени сервиса (например,
appможет подключиться кdatabaseпо хостуdatabase).
Этот файл — стандарт для описания окружения для локальной разработки, тестирования и иногда для простых продакшен-развёртываний.