Это инструмент, который позволяет определить и управлять многоконтейнерными Docker приложениями. С помощью Docker Compose можно описать конфигурацию всех сервисов вашего приложения в одном файле и затем легко запустить их вместе с помощью одной команды.
🚩Функции
🟠Определение многоконтейнерного приложения
Docker Compose использует YAML-файл (
docker-compose.yml) для описания всех контейнеров (сервисов), которые составляют ваше приложение. В этом файле можно указать образы, настройки сети, монтируемые тома и переменные окружения.🟠Управление зависимостями
Позволяет указать зависимости между сервисами, что обеспечивает правильный порядок запуска контейнеров.
🟠Запуск и остановка сервисов
С помощью простой команды
docker-compose up можно запустить все контейнеры, указанные в docker-compose.yml. Команда docker-compose down останавливает и удаляет все контейнеры, сети и тома, созданные up.🟠Поддержка масштабирования
Можно легко масштабировать сервисы (запускать несколько экземпляров одного контейнера) с помощью команды
docker-compose up --scale.🚩Пример использования
docker-compose.yml для веб-приложения, состоящего из веб-сервера и базы данных:version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
🚩Команды
🟠docker-compose up
Создает и запускает все контейнеры, указанные в
docker-compose.yml.🟠docker-compose down
Останавливает и удаляет все контейнеры, сети и тома, созданные
docker-compose up.🟠docker-compose ps
Показывает статус запущенных контейнеров.
🟠docker-compose logs
Выводит логи всех контейнеров.
🟠docker-compose exec [service] [command]
Выполняет команду в запущенном контейнере.
🚩Плюсы
➕Упрощение разработки
Легко настроить и запустить все необходимые сервисы для разработки.
➕Легкость в использовании
Простота в управлении многоконтейнерными приложениями с помощью нескольких команд.
➕Унификация окружения
Единый файл конфигурации для разработки, тестирования и производства, что снижает вероятность ошибок из-за различий в конфигурациях.
➕Масштабируемость
Легко масштабировать отдельные сервисы приложения.
Ставь 👍 и забирай 📚 Базу знаний