Основы Docker Compose
Введение в Docker Compose
Docker Compose — мощный инструмент для оркестрации контейнеров, позволяющий разработчикам определять и управлять многоконтейнерными приложениями с помощью одного файла конфигурации. Он упрощает процесс запуска сложных архитектур приложений, позволяя описывать сервисы, сети и тома декларативным способом.
Основные понятия и архитектура
Docker Compose использует файлы YAML для конфигурации сервисов приложений, обеспечивая оптимизированный подход к конфигурации контейнерных сервисов. Основной файл конфигурации обычно называется docker-compose.yml.
graph TD
A[Docker Compose] --> B[YAML Configuration]
B --> C[Service Definitions]
B --> D[Network Settings]
B --> E[Volume Mappings]
Структура файла конфигурации
Типичная конфигурация Docker Compose включает ключевые элементы:
| Элемент |
Описание |
Пример |
| version |
Версия файла Compose |
version: '3.8' |
| services |
Определения контейнеров |
Несколько конфигураций сервисов |
| networks |
Настройки пользовательской сети |
Мост, хост-сети |
| volumes |
Постоянное хранилище данных |
Имя или подключение к хост-томам |
Практический пример: Настройка веб-приложения
Вот полная конфигурация Docker Compose для типичного веб-приложения:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./website:/usr/share/nginx/html
database:
image: postgres:13
environment:
POSTGRES_PASSWORD: secretpassword
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
Командные операции
Необходимые команды Docker Compose для управления многоконтейнерными приложениями:
## Запуск сервисов, определенных в docker-compose.yml
docker-compose up -d
## Остановка и удаление контейнеров
docker-compose down
## Просмотр запущенных контейнеров
docker-compose ps
## Просмотр логов сервиса
docker-compose logs web
Управление зависимостями сервисов
Docker Compose позволяет определять зависимости сервисов для управления последовательностью запуска:
services:
web:
depends_on:
- database
restart: on-failure
Эта конфигурация гарантирует, что сервис базы данных запустится перед сервисом веб-приложения, с возможностью автоматической перезагрузки.