Docker Compose
Docker Compose — это инструментальное средство, входящее в состав Docker. Оно предназначено для решения задач, связанных с развёртыванием проектов. Технология Docker Compose, позволяет, с помощью одной команды, запускать множество сервисов.
Docker применяется для управления отдельными контейнерами (сервисами), из которых состоит приложение.
Docker Compose используется для одновременного управления несколькими контейнерами, входящими в состав приложения. Этот инструмент предлагает те же возможности, что и Docker, но позволяет работать с более сложными приложениями.
Docker Compose по умолчанию создает bridge между контейнерами, соответственно docker поднимает DNS resolve и
контейнеры могут общаться друг к другу по имени.
Файл примера:
examples/docker-compose.yml
# сборка docker образов (если прописан блок build)
$ docker compose build
# публикация docker в Container Registry (в имени образа прописывается namespace)
$ docker compose push
# запуск всех образов
$ docker compose up -d --wait
[+] Running 4/5
⠿ Network examples_default Created 0.0s
⠿ Volume "examples_db-data" Created 0.0s
⠿ Container postgres Healthy 11.0s
⠿ Container backend-todo-list Waiting 20.4s
⠿ Container frontend-todo-list Created 32.5s
# остановка, старт и рестарт сервисов
$ docker compose start/stop/restart
# остановка всех сервисов и удаление volume
$ docker compose down --volumes
[+] Running 3/3
⠿ Container simple-frontend Removed 0.2s
⠿ Container simple-backend Removed 0.3s
⠿ Network examples_default Removed
# просмотр какой порт проброшен наружу для порта 80 внутри контейнера
$ docker compose port frontend-todo-list 80
0.0.0.0:80
Compose автоматически создает сеть проекта и DNS resolve по именам сервисов, поэтому backend может обратиться к postgres по имени сервиса, а не по IP.