5/5 (1) Создание файла Docker Compose

Docker Compose — это инструмент для определения и запуска многоконтейнерных приложений Docker. Другими словами, если вам нужно определить службу, для работы которой требуется более одного контейнера Docker, Docker Compose может быть для вас инструментом.

Но как использовать Docker ComposeDocker Compose зависит от файла docker-compose.yml (который, в свою очередь, может работать вместе с Dockerfile). 

Я расскажу вам об этом в самых простых терминах, чтобы вы поняли, как создать свой собственный базовый файл Docker Compose.

Что вам нужно

Единственное, что вам понадобится:

  • Сервер с запущенным экземпляром Docker и сервис docker-compose.
  • Пользователь, принадлежащий к группе докеров.

Как работает Docker Compose

Проще говоря: Docker Compose создает стек приложений для запуска полноценного сервиса. Файл docker-compose.yml разбит на разделы, каждый из которых представляет собой отдельный контейнер, который в сочетании с другими контейнерами создает службу. Например, у вас может быть файл docker-compose.yml, состоящий из двух разделов:

  • web — веб-серверная часть приложения.
  • db — серверная часть приложения.

Каждый раздел может состоять из разных компонентов. И поскольку вам может потребоваться конкретизация веб-раздела, вы можете указать docker-compose, что веб-часть будет определена в Dockerfile (мы отложим это для другого практического руководства). Фактически, с помощью docker-compose вы можете включить несколько файлов Docker для создания очень сложных стеков. Однако мы собираемся создать довольно простой стек, чтобы вы могли легко начать работу.

Итак, давайте создадим этот файл docker-compose.yml с разделами web и db. Мы будем использовать NGINX и MySQL для создания стека, который легко использовать в целях разработки.

Файл docker-compose.yml

Первое, что мы должны сделать, это создать новый файл. Мы создадим этот файл во вновь созданном каталоге. Выполните команду mkdir ~ / docker-build . Перейдите в этот вновь созданный каталог с помощью команды cd ~ / docker-build . Оказавшись внутри этого каталога, создайте новый файл docker-compose.yml с помощью команды:

nano docker-compose.yml

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

Первое, что нужно сделать, это добавить заголовок файла. Вверху файла добавьте следующее:

version: '3'

Это указывает Docker Compose, что мы используем версию 3 инструмента. Следующая строка проинструктирует Docker Compose о том, что дальше будут развертываться сервисы. Это определяется с помощью:

...
services:
version: '3'
services:

Нашим первым определенным разделом будет веб-часть стека. Мы можем сделать это двумя простыми строчками:

...
web:
 image: nginx

Приведенное выше указывает Docker Compose на развертывание контейнера с использованием официального образа nginx. Мы не делаем ничего особенного для этого контейнера. Это просто.

В следующем разделе мы определим базу данных. Это становится немного сложнее, так как мы должны настроить необходимые параметры для работы базы данных. Начнем с определения раздела с помощью:

...
db:

Затем мы инструктируем Docker Compose использовать образ mysql для базы данных с:

...
image: mysql

Теперь мы определяем внешний и внутренний порты для использования в базе данных. Для этого мы воспользуемся портами MySQL по умолчанию и определим их так:

...
ports:
- "3306:3306"

Наконец, мы настраиваем среду базы данных. Среда будет параметрами конфигурации для базы данных (пароли, пользователи, имя базы данных). Этот раздел выглядит так:

...
environment:
- MYSQL_ROOT_PASSWORD=password1
- MYSQL_USER=user
- MYSQL_PASSWORD=password2
- MYSQL_DATABASE=database

Где:

  • password1 — это пароль администратора MySQL.
  • user — новый пользователь MySQL.
  • password2 — это пароль для нового пользователя MySQL.
  • database — это имя используемой базы данных.

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

Объединение этого файла выглядит так:

version: '3'
services:
  web:
    image: nginx
  db:
    image: mysql
    ports:
    - "3306:3306"
    environment:
    - MYSQL_ROOT_PASSWORD=password
    - MYSQL_USER=user
    - MYSQL_PASSWORD=password
    - MYSQL_DATABASE=demodb

Помните, что структура файла должна быть соотвутствующей, поэтому делайте отступы осторожно.

Сохраните и закройте этот файл. 

Сборка с помощью Docker Compose

Теперь, когда у нас есть файл docker-compose.yml, пришло время создать приложение. Поскольку это очень простое приложение, оно в основном развертывает два контейнера — веб-сервер и базу данных. Как вы используете эти два контейнера, зависит от вас. Вы, конечно, можете разработать свои собственные образы для этого (скажем, пользовательские образы NGINX и MySQL, которые без проблем работают вместе для создания уникальной службы или приложения). В нашем случае мы просто используем изображения по умолчанию (для демонстрации).

Итак, теперь, чтобы собрать стек, вернитесь в окно терминала, убедитесь, что вы находитесь в своем каталоге сборки, и выполните команду:

docker-compose

Приведенная выше команда развернет как веб-контейнеры, так и контейнеры db. Если вы запустите только эту команду, контейнеры будут развернуты в подключенном режиме, поэтому вы не получите ответ на приглашение bash. Если вы хотите запустить их в автономном режиме, вы должны ввести команду:

docker-compose up -d

Чтобы убедиться, что контейнеры работают, введите команду:

docker-compose ps

Вы увидите имя контейнера, команду, состояние и перечисленные порты.

Поздравляем, вы только что развернули свой первый «стек» контейнеров с помощью Docker Compose. Да, это невероятно простой пример, но он должен помочь вам начать очень долгое и интересное путешествие в сферу DevOps.

Пожалуйста, оцените материал

WebSofter

Web - технологии