0Pricing
DevOps Bootcamp · Урок

Написание файла Compose

Изучите синтаксис YAML для `docker-compose.yml`, чтобы определять сервисы, сети и тома.

«Написание файла Compose» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Файл Compose: чертёж приложения

Добро пожаловать в раздел о написании файлов Docker Compose! Файл docker-compose.yml — это чертёж для описания и запуска приложений Docker, состоящих из нескольких контейнеров.

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

Написание файла Compose — иллюстрация 1

YAML: краткое повторение

Файлы Docker Compose записываются на YAML (YAML Ain't Markup Language). Это удобный для человека стандарт сериализации данных.

  • Пары ключ-значение: key: value
  • Списки: элементы начинаются с дефиса (- item)
  • Отступы: необходимы для определения структуры и иерархии. Используйте пробелы, а не табуляции!

Ключ `version`

Каждый файл docker-compose.yml начинается с ключа version. Он задаёт версию формата файла Compose и помогает Docker Compose понять, как интерпретировать файл.

Для большинства современных приложений рекомендуется использовать '3.8' или аналогичную версию '3.x'.

version: '3.8'

Определение `services`

В разделе services определяются отдельные контейнеры (службы), из которых состоит приложение. Каждая служба представляет один компонент, например веб-сервер или базу данных.

В разделе services перечисляются службы с выбранными Вами именами.

version: '3.8'
services:
  web:
    # Service configuration goes here
  database:
    # Another service's configuration

`image` и `ports` службы

В определении службы ключ image указывает, какой образ Docker использовать (например, nginx:latest). Ключ ports сопоставляет порты контейнера с портами хоста, обеспечивая внешний доступ.

  • "80:80" сопоставляет порт 80 хоста с портом 80 контейнера.
version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

`volumes` службы

Ключ volumes внутри службы позволяет монтировать пути с хост-компьютера в контейнер или использовать именованные тома для хранения данных с сохранением.

В этом примере локальный каталог ./app монтируется в /usr/src/app внутри контейнера.

version: '3.8'
services:
  app:
    image: my-node-app
    volumes:
      - ./app:/usr/src/app

Переменные `environment` сервиса

Используйте ключ environment, чтобы передать переменные окружения контейнерам вашего сервиса. Это особенно важно для настроек, которые могут различаться в разных окружениях (например, строк подключения к базе данных).

Переменные можно указать в виде пар «ключ—значение» или в формате списка.

version: '3.8'
services:
  backend:
    image: my-api
    environment:
      - DATABASE_URL=postgres://user:pass@host:5432/db
      - NODE_ENV=development

Корневые `networks` и `volumes`

Помимо определения именованных томов и сетей внутри сервисов, вы также можете объявить их на верхнем уровне файла docker-compose.yml.

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

version: '3.8'
services:
  # ... service definitions ...

networks:
  my_app_network:
    # custom network configuration

volumes:
  db_data:
    # named volume configuration

Объединим всё вместе

Ниже приведён небольшой пример, объединяющий изученные концепции. В нём определены веб-сервис и сервис базы данных, используются образ, порты и именованный том.

Обратите внимание, как отступы создают структуру.

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - web_content:/usr/share/nginx/html
  db:
    image: postgres:13
    environment:
      - POSTGRES_DB=mydb
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=secret

volumes:
  web_content:
  db_data:

Проверка файла Compose

Какой из следующих фрагментов YAML корректно определяет сервис Docker Compose с именем «api», использующий образ «myapi:1.0» и открывающий порт контейнера 3000 на порту хоста 8080?

Повторение: основные элементы файла Compose

Отличная работа! Вы изучили основы написания файла docker-compose.yml.

  • Он начинается с version.
  • services определяет компоненты вашего приложения.
  • Каждый сервис использует image, может открывать ports, использовать volumes для сохранения данных и задавать переменные environment.
  • Корневые networks и volumes позволяют выполнять расширенную настройку.

Освоение этой структуры YAML — ключ к оркестрации приложений с несколькими контейнерами!

Часто задаваемые вопросы

Урок «Написание файла Compose» бесплатный?

Да — полный текст урока «Написание файла Compose» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Написание файла Compose»?

Изучите синтаксис YAML для `docker-compose.yml`, чтобы определять сервисы, сети и тома. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Написание файла Compose»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Что такое Docker Compose?
  2. Написание файла Compose
  3. Развёртывание приложений из нескольких сервисов
  4. Переменные окружения и файлы .env
← Назад к DevOps Bootcamp