Как установить и использовать Docker Compose в CentOS 7

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

С помощью Compose вы определяете службы, сети и тома приложения в одном файле YAML, а затем запускаете приложение с помощью одной команды.

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

Это руководство проведет вас через установку последней версии Docker Compose на CentOS 7. Мы также рассмотрим основные концепции и команды Docker Compose.

Подготовка

Прежде чем продолжить изучение этого руководства, убедитесь, что вы выполнили следующие предварительные условия:

Установите Docker Compose на CentOS

Рекомендуемый метод установки Docker Compose на CentOS 7 — загрузить двоичный файл Compose из репозитория Docker на GitHub.

На момент написания этой статьи последней стабильной версией Docker Compose была версия 1.23.1 . Перед загрузкой двоичного файла Compose посетите страницу выпуска репозитория Compose на GitHub и проверьте, доступна ли для загрузки новая версия.

Чтобы установить Docker Compose на CentOS 7, выполните следующие действия:

  1. Начните с загрузки двоичного файла Docker Compose в каталог /usr/local/bin используя следующую команду curl :

     sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. После завершения загрузки сделайте исполняемый двоичный файл , набрав:

     sudo chmod +x /usr/local/bin/docker-compose
  3. Чтобы проверить тип установки, выполните следующую команду для печати версии Compose:

     docker-compose --version

    Результат будет выглядеть примерно так:

     docker-compose version 1.23.1, build b02f1306

Начало работы с Docker Compose

В этом разделе мы покажем, как использовать Docker Compose для запуска стека WordPress на вашем компьютере с CentOS 7.

Начните с создания нового каталога для проекта и перехода в него:

mkdir my_app && cd my_app

Затем создайте файл с именем docker-compose.yml внутри каталога проекта:

nano docker-compose.yml

Вставьте следующий контент:

docker-compose.yml
version: '3.3'

services:
  db:
    image: mysql:5.7
    restart: always
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress

  wordpress:
    image: wordpress
    restart: always
    volumes:
      - ./wp_data:/var/www/html
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: password
    depends_on:
       - db

volumes:
    db_data:
    wp_data:

Давайте проанализируем код построчно.

В первой строке указывается версия файла Compose . Существует несколько различных версий формата файла Compose с поддержкой определенных выпусков Docker.

Далее мы определяем две службы: db и wordpress . Каждая служба запускает один образ и создает отдельный контейнер при запуске docker-compose.

Служба db :

  • Использует образ mysql:5.7 . Если образ отсутствует в вашей системе, Compose извлечет его из общедоступного репозитория Docker Hub.
  • Использует политику перезапуска always которая указывает контейнеру всегда перезапускаться.
  • Создает именованный том db_data чтобы сделать базу данных постоянной.
  • Определяет переменные среды для образа mysql:5.7 .

Сервис wordpress :

  • Использует изображение wordpress . Если образ отсутствует в вашей системе, Compose извлечет его из общедоступного репозитория Docker Hub.
  • Использует политику перезапуска always которая указывает контейнеру всегда перезапускаться.
  • Устанавливает каталог wp_data на хосте в /var/lib/mysql внутри контейнера.
  • Перенаправляет открытый порт 80 на контейнере на порт 8080 на хост-машине.
  • Определяет переменные среды для изображения wordpress .
  • Инструкция depends_on определяет зависимость между двумя службами. В этом примере db будет запущен раньше wordpress .

В каталоге проекта запустите приложение WordPress, используя следующую команду:

docker-compose up

Результат должен выглядеть примерно так:

...
wordpress_1  | [Sat Oct 13 21:30:48.286382 2018] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.2.10 configured -- resuming normal operations
wordpress_1  | [Sat Oct 13 21:30:48.286425 2018] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'

Compose извлечет оба изображения, запустит два контейнера и создаст каталог wp_data каталоге вашего проекта.

Откройте браузер, введите http://0.0.0.0:8080/ и вы увидите экран установки WordPress.

На этом этапе приложение WordPress запущено и вы можете начать работу над своей темой или плагином.

Чтобы остановить создание, нажмите CTRL+C переменные среды. Если вы хотите запустить Compose в автономном режиме, используйте флаг -d :

docker-compose up -d

Чтобы проверить запущенные службы, используйте опцию ps :

docker-compose ps
       Name                     Command               State          Ports        
----------------------------------------------------------------------------------
my_app_db_1          docker-entrypoint.sh mysqld      Up      3306/tcp, 33060/tcp 
my_app_wordpress_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:8080->80/tcp

Когда Compose работает в автономном режиме, чтобы остановить использование служб:

docker-compose stop

Чтобы полностью удалить контейнеры, используйте опцию down :

docker-compose down

Передача переключателя --volumes также удалит тома данных:

docker-compose down --volumes

Удаление Docker Compose

Если вы хотите удалить Docker Compose, просто удалите двоичный файл с помощью следующей команды:

sudo rm /usr/local/bin/docker-compose

Выводы

Вы узнали, как установить и использовать Docker Compose на CentOS 7.

Если у вас есть вопросы, оставьте комментарий ниже.

Оставьте комментарий