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

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

Введение

Использование Compose обычно разделяется на три этапа:

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

Compose можно установить на Unraid 6.8.3 несколькими способами, а именно через curl, или же в виде привычного контейнера, но в данной статье, предлагаю рассмотреть способ, который использовал я сам.

Подготовка

Установка будет всего в 4 шага:

  • Установка плагина Nerdpack из APPS
  • Установка сопутствующих пакетов из Nerdpack
  • Применение команд установки в консоли Unraid
  • Добавление информации в файл GO

Шаг 1 — установка NerdPack

Переходим на вкладку APPS.
Через форму поиска находим Nerdpack и устанавливаем нажимая Docker Compose - упрощаем установку пакетов на Unraid 6.8.3 4

Docker Compose - упрощаем установку пакетов на Unraid 6.8.3 5
Поиск плагина NerdPack в APPS

Шаг 2 — установка сопутствующих пакетов

Переходим на вкладку SETTINGS на главной панели сервера, находим установленный в предыдущем шаге Nerdpack и кликаем по иконке:

Docker Compose - упрощаем установку пакетов на Unraid 6.8.3 6
NerdPack

В открывшемся окне появится список доступных пакетов, для Doker Compose, необходимы 4:

  • python3
  • python-pip
  • python-setuptools
  • libffi (не актуально на версии unRAID 6.9)

Устанавливается путем переключение ползунка справа, и внизу страницы, жмем APPLY подтверждая выбор и установку.

Docker Compose - упрощаем установку пакетов на Unraid 6.8.3 7
Пакеты, в Nerdpack

Шаг 3 — установка Docker Compose

Открываем терминал кликнув по значку в верхнем правом углу Docker Compose - упрощаем установку пакетов на Unraid 6.8.3 8

Используем команду: pip3 install docker-compose

Docker Compose - упрощаем установку пакетов на Unraid 6.8.3 9
Команда в терминале на установку Docker Compose

Результат должен быть как на скриншоте ниже:

Docker Compose - упрощаем установку пакетов на Unraid 6.8.3 10
Результат установки Docker Compose

Версию установленного Docker Compose можно проверить командой:

docker-compose --version

Шаг 4 — правки «GO» файла

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

Для правок GO переходим в терминал и применяем команду:

cd /boot/config (переходим в папку конфиг)

Затем:

ls (смотрим, что есть в этой папке).

Видим нужный нам файл ‘go’.

Docker Compose - упрощаем установку пакетов на Unraid 6.8.3 11
Поиск файла «GO»

Далее открываем его с помощью текстового редактора Nano:

nano go

И вписываем строки для автоматической установки Docker Compose:

# docker-compose automatic install
pip3 install docker-compose

Результат должен выглядеть как на скриншоте ниже.

Docker Compose - упрощаем установку пакетов на Unraid 6.8.3 12
Правки файла «GO»

Пример установки Nextcloud + MariaDB с помощью Docker Compose

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

Для примера установим связку Nextcloud+Mariadb средствами Docker Compose.
Проходим на официальную страницу Nextcloud в докерхаб.
Находим Compose файл, для установки Nextcloud с веб-сервером Apache.

Docker Compose - упрощаем установку пакетов на Unraid 6.8.3 13
Compose на hub`е

Содержимое выделяем и копируем в буфер CTRL+S

version: '2'

volumes:
  nextcloud:
  db:

services:
  db:
    image: mariadb
    restart: always
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
    image: nextcloud
    restart: always
    ports:
      - 8080:80
    links:
      - db
    volumes:
      - nextcloud:/var/www/html
    environment:
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db

Открываем терминал в Unraid, вводим команды по очереди:

Переход в рабочую директорию

cd /mnt/user/appdata/

Создание папки nextcloud-compose

mkdir -p nextcloud-compose

Переход в созданную папку

cd /mnt/user/appdata/nextcloud-compose/

Создание установочного docker-compose файл

nano

Вставляем в пустой nano файл содержимое docker-compose файла, который мы скопировали выше.

Редактируем параметры под себя, те на, которые указал на скрине.

Docker Compose - упрощаем установку пакетов на Unraid 6.8.3 14
Редактируем параметры

Жмем сочетание клавиш CTRL+S и сохраняем файл под именем:

docker-compose.yml

Выходим из nano, сочетанием клавиш CTRL+X
Теперь проверяем, что мы находимся в той же директории, пишем в консоли:

pwd

Вывод должен быть следующий:

/mnt/user/appdata/nextcloud-compose

В финале, запускаем установку Nextcloud через compose, пишем в терминале:

docker-compose up -d

Ждем пока закончится процесс установки:

Docker Compose - упрощаем установку пакетов на Unraid 6.8.3 15
Установка связки Nextcloud + MariaDB

Проверяем в браузере наш установленный Nextcloud по адресу, который указали в compose файле. У меня это 192.168.1.7:1111

Docker Compose - упрощаем установку пакетов на Unraid 6.8.3 16

Итог

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