Поиск по сайту:

Что такое Docker Compose и как его использовать?


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

Что делает Docker Compose?

Контейнеры Docker используются для запуска приложений в изолированной среде. В настоящее время довольно часто можно увидеть развертывание приложений в Docker из-за его многочисленных преимуществ. Однако зачастую это не так просто, как запуск одного контейнера. Обычно у вас может быть много контейнеров, объединенных вместе, чтобы действовать как одна связанная служба, состоящая из многих движущихся частей.

Управление всем этим во время развертывания запутано, поэтому для его очистки Docker предоставляет Docker Compose, инструмент настройки, используемый для одновременного запуска нескольких контейнеров. Вы можете определить всю конфигурацию в одном файле YAML, а затем запустить все контейнеры с помощью одной команды.

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

Использование Docker Compose — это трехэтапный процесс:

  • Создайте образы компонентов, используя их файлы Dockerfile, или извлеките их из реестра.
  • Определите все службы компонентов в файле docker-compose.yml .
  • Запустите их все вместе, используя docker-compose CLI.

Docker Compose — это не другой вид Dockerfile. Вам по-прежнему нужно будет создавать и публиковать свои контейнеры Docker с помощью Dockerfile. Но вместо того, чтобы запускать их напрямую, вы можете использовать Docker Compose для управления конфигурацией развертывания с несколькими контейнерами.

Как вы используете Docker Compose?

Конфигурация файла компоновки docker выполняется в docker-compose.yml. Вам не нужно размещать это в корне вашего проекта, как Dockerfile. На самом деле он может идти куда угодно, так как не зависит ни от какого другого кода. Однако, если вы создаете образы локально, они должны находиться в папке проекта с создаваемым кодом.

Файл конфигурации Compose будет выглядеть примерно так. Эта конфигурация запускает экземпляр WordPress с использованием контейнера wordpress вне Docker Hub. Однако это зависит от базы данных MySQL, которая также создается Compose.

version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: rootpasswordchangeme
       MYSQL_DATABASE: wordpress
       MYSQL_USER: usernamechangeme
       MYSQL_PASSWORD: passwordchangeme

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: usernamechangeme
       WORDPRESS_DB_PASSWORD: passwordchangeme
volumes:
    db_data:

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

Далее список услуг. Первый называется «db» и использует контейнер mysql:5.7, настроенный на постоянный перезапуск, и с переменными среды для настройки базы данных с пользователем и паролем. Для сохранения данных при перезапусках этот образ настроен с томом Docker, подключенным к каталогу данных MySQL.

Другая служба — «wordpress», которая зависит от службы базы данных, гарантируя, что Docker перед запуском убедится, что база данных запущена. Он предоставляет порт 80 как порт 8000 и устанавливает некоторые переменные среды, чтобы он мог подключаться к MySQL. Обратите внимание, что хост для базы данных установлен на db:3306, что указывает контейнеру WordPress подключиться к службе «db».

Наконец, тома определяются для постоянного хранения. При желании вы также можете определить пользовательскую сеть для контейнеров. Существует множество расширенных параметров, которые вы можете настроить, поэтому, если вы хотите сделать что-то конкретное, вам следует ознакомиться с документацией по Docker Compose.

После настройки запустить эту службу легко. Просто запустите docker-compose up, который подтянет все необходимые контейнеры и запустит ваши службы.

docker-compose up -d

И вы должны увидеть службы, работающие в системе с помощью docker ps. В этом случае вы увидите, что WordPress работает правильно.

Создание с помощью Docker Compose

Docker Compose также можно использовать в проекте Dockerfile, и его можно настроить для создания и запуска образа локально, а не для извлечения из Docker Hub.

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

version: "3.8"
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternate
    image: imagename:tag

В этом случае также задается переменная image:, но здесь она используется для пометки образа, созданного Docker Compose.