Основы работы с Docker Compose

Основы работы с Docker Compose

Docker Compose: инструкция по работе за 10 минут

Docker Compose — это инструмент для управления многоконтейнерными приложениями. Вместо того чтобы вручную запускать каждый контейнер отдельной командой docker run, вы описываете все сервисы в одном YAML-файле и управляете ими одной командой. Эта инструкция поможет вам освоить основы за 10 минут.

Представьте, что у вас есть веб-приложение, база данных MySQL и кэш Redis. Без Compose вам пришлось бы запускать три контейнера вручную, настраивать сеть между ними, следить за порядком запуска и не забывать про монтирование данных. Compose решает эти проблемы: вы один раз описываете всю конфигурацию в файле compose.yaml (или docker-compose.yml), и дальше запускаете всё одной командой.

Ключевые преимущества:

  • Одна команда для всего стекаdocker compose up запускает все сервисы
  • Единая конфигурация — файл можно хранить в репозитории, и любой разработчик получит идентичное окружение
  • Автоматическое управление сетью — контейнеры видят друг друга по именам сервисов
  • Персистентность данных — тома (volumes) сохраняют данные между перезапусками

Важно: используется Compose V2 с командой docker compose (через пробел). Старая версия docker-compose (через дефис) устарела и больше не поддерживается

Установка

Docker Compose V2 входит в состав Docker Desktop для Windows и macOS. На Linux установите плагин Compose вместе с Docker Engine:

sudo apt-get update
sudo apt-get install docker-compose-plugin

Проверка:

docker compose version

Структура файла Compose

Файл compose.yaml состоит из нескольких секций

services:          # Обязательная секция — описание контейнеров
  web:
    image: nginx
    ports:
      - "80:80"
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - db-data:/var/lib/mysql

volumes:           # Именованные тома для сохранения данных
  db-data:

networks:          # (опционально) Пользовательские сети
  app-net:
    driver: bridge

Сервисы (services) — это описание каждого контейнера. Имя сервиса (например, web или db) становится DNS-именем, по которому другие контейнеры могут к нему обратиться. Если в одном сервисе указать db, то из другого сервиса можно подключиться к db:3306.

Тома (volumes) — используются для данных, которые должны сохраняться. Без томов данные внутри контейнера исчезнут при его удалении.

Сети (networks) — Compose автоматически создаёт сеть для проекта, но можно определить и свои.

Курс «Специалист в области компьютерной графики и веб-дизайна»

Профессиональная переподготовка с присвоением квалификации

Специалист в области компьютерной графики и веб-дизайна

Читать также

Классификация веб-сайтов: виды, критерии и примеры

Классификация веб-сайтов: виды, критерии и примеры

Веб-технологии 15 мин.
Искусство общения с ИИ: Основы промпт-инжиниринга

Искусство общения с ИИ: Основы промпт-инжиниринга

Веб-технологии 15 мин.
Промпт-инжиниринг: как найти общий язык с ИИ

Промпт-инжиниринг: как найти общий язык с ИИ

Веб-технологии 10 мин.