Перейти к содержанию

Docker compose

Описание

Это инструмент, которые позволяет с помощью одного файла docker-compose.yml описать и запустить многоконтейнерное приложение.

В этом файле указывается какие контейнеры нужно создать, какие образы использовать, какие сети использовать, порты, какие команды нужно выполнить, какие переменные окружения сделать и как контейнеры должны взаимодействовать друг с другом.

Зачем использовать

Без docker compose чтобы запустить многоконтейнерное приложение пришлось бы многократно запускать контейнеры вручную через команду docker run ..., учитывая все необходимые опции: какие порты нужно пробросить, volume, network, переменные окружения, итд.

Парадигма

Docker - управляет одним контейнером

Docker Compose - управляет одним приложением, состоящим из нескольких контейнеров.

Пример файла docker-compose.yml

services:
 nginx:
  build: .
  ports:
   - "8080:8080"
  volumes:
   - ./site:/var/www/html

В данном примере мы описываем сервис под названием nginx. build: . говорит нам что бы мы для этого сервиса использовали образ который нужно собрать из файла Dockerfile который находится в данной же директории. ports: - "8080:8080" говорит чтобы мы пробросили внешний порт хоста во внутренний порт будущего контейнера. volumes: - ./site:/var/www/html говорит чтобы мы примонтировали bind mount директории на нашем хосте ./site в директорию в контейнере по пути /var/www/html.

Для запуска нашего приложения используем следующую команду:

docker-compose up -d

По результатам выполнения команды будет создан контейнер, сеть, контейнеру будет назначено имя соответствующее названия проекта (названию директории)