Docker compose
Описание
Это инструмент, которые позволяет с помощью одного файла docker-compose.yml описать и запустить многоконтейнерное приложение.
В этом файле указывается какие контейнеры нужно создать, какие образы использовать, какие сети использовать, порты, какие команды нужно выполнить, какие переменные окружения сделать и как контейнеры должны взаимодействовать друг с другом.
Зачем использовать
Без docker compose чтобы запустить многоконтейнерное приложение пришлось бы многократно запускать контейнеры вручную через команду docker run ..., учитывая все необходимые опции: какие порты нужно пробросить, volume, network, переменные окружения, итд.
Парадигма
Docker - управляет одним контейнером
Docker Compose - управляет одним приложением, состоящим из нескольких контейнеров.
Пример файла docker-compose.yml
В данном примере мы описываем сервис под названием nginx.
build: . говорит нам что бы мы для этого сервиса использовали образ который нужно собрать из файла Dockerfile который находится в данной же директории.
ports: - "8080:8080" говорит чтобы мы пробросили внешний порт хоста во внутренний порт будущего контейнера.
volumes: - ./site:/var/www/html говорит чтобы мы примонтировали bind mount директории на нашем хосте ./site в директорию в контейнере по пути /var/www/html.
Для запуска нашего приложения используем следующую команду:
По результатам выполнения команды будет создан контейнер, сеть, контейнеру будет назначено имя соответствующее названия проекта (названию директории)