Использование плагинов Dokku

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

Философия Dokku подразумевает обработку ресурсов приложения в качестве отдельных компонентов приложения, благодаря чему процесс обработки становится более гибким (к примеру, ресурсы или основной код приложения можно без особых дополнительных настроек переместить в своп). Dokku обрабатывает внешние ресурсы при помощи системы плагинов.

Данное руководство покажет, как расширить функциональность проекта и связать приложение с бэкендом при помощи системы плагинов Dokku. Также руководство расскажет о некоторых плагинах для мониторинга и управления приложением.

Требования

Для выполнения руководства нужно предварительно установить Dokku.

Доступные плагины

Предназначенный для быстрого расширения функциональности приложения, инструмент Dokku предоставляет систему плагинов, которую легко подключить. На самом деле Dokku может обрабатывать многие операции из базовой функциональности приложения. Благодаря этому основной код приложения остаётся чистым и более понятным.

Многим пользователям, вероятно, нужна система плагинов для доступа к БД. Dokku предоставляет такие плагины для систем управления базами данных MariaDB, PostgreSQL, MongoDB и Redis. Полный список плагинов для БД можно найти здесь.

Помимо настройки доступа к БД Dokku предоставляет множество плагинов менеджеров процессов. Dokku запускает процессы через Procfile, содержащий список типов процессов, которые нужно запустить, и список команд, необходимых для выполнения процессов. По умолчанию Dokku выполняет только сетевые процессы.

Чтобы запускать и процессы других типов (например, рабочие процессы), можно использовать менеджер процессов. Их в Dokku довольно много, но все они очень похожи; на данный момент это circus, shoreman и supervisord. Кроме поддержки различных типов процессов эти менеджеры также позволяют перезапускать приложения в случае сбоя.

Основы работы с плагинами

Большинство плагинов устанавливаются и настраиваются следующим образом.

Для загрузки и установки плагина используйте команду:

dokku plugin:install git_repository

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

Чтобы открыть справку Dokku, введите:

dokku help

Справочная система Dokku генерируется динамически и содержит файлы справки, поставляемые в комплекте с установленными плагинами. К примеру, если в системе установлен плагин PostgreSQL, справка будет выглядеть так:

. . .
postgres:create <app>     Create a PostgreSQL container
postgres:delete <app>     Delete specified PostgreSQL container
postgres:info <app>       Display database informations
postgres:link <app> <db>  Link an app to a PostgreSQL database
postgres:logs <app>       Display last logs from PostgreSQL container
. . .

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

Пример работы плагина

Чтобы разобраться в работе плагина во время развёртывания, рассмотрим несколько примеров.

Примечание: Предполагается, что приложение использует БД PostgreSQL.

Общая установка

Для начала нужно загрузить соответствующие файлы с GitHub, установить компоненты плагина и его зависимости:

dokku plugin:install https://github.com/dokku/dokku-postgres.git

Настройка плагина

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

К примеру, плагин PostgreSQL позволяет создавать БД перед развёртыванием. В свою очередь плагин MongoDB требует сначала развернуть приложение, затем создать БД, а затем перезагрузить приложение.

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

Создание БД

Чтобы создать БД перед развёртыванием, а затем автоматически подключить её к приложению во время развёртывания, нужно выбрать одно имя для БД и для приложения. Общий синтаксис выглядит так:

dokku postgres:create app_name

Затем Dokku подключит приложение app_name к одноимённой БД.

Во время создания БД программа будет возвращать информацию о параметрах соединения. В данном примере параметры соединения будет выглядеть так:

-----> Starting container
Waiting for container to be ready
Creating container database
=====> Postgres container created: app_name
DSN: postgres://postgres:1f61e96c987fc06cc5e71e70baeee776@172.17.0.9:5432/app_name

При необходимости жестко закодировать параметры подключения приложения (чего делать не рекомендуется) можете использовать эти данные. Также можно использовать эту информацию для подключения к базе данных на локальной машине через стандартные интерфейсы БД (в данном случае это psql).

В большинстве случаев эта информация не используется, потому что при развёртывании Dokku устанавливает переменную окружения DATABASE_URL, которая содержит строку подключения с соответствующими параметрами. Эту переменную можно использовать в программе для сохранения гибкости.

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

dokku postgres:info app_name

Теперь БД для приложения готова. Загрузите приложение в Dokku при помощи git. В следующем выводе программы (в конце) вы увидите, что приложение подключено к БД:

remote: -----> App app_name linked to postgresql/app_name database
remote:        DATABASE_URL=postgres://postgres:1f61e96c987fc06cc5e71e70baeee776@172.17.0.9:5432/app_name

Обратите внимание: переменная DATABASE_URL была установлена при помощи информации о БД.

Большинство плагинов поддерживают индивидуальные логи:

dokku postgres:logs app_name

Развёртывание приложения

Чтобы развернуть приложение и БД с разными именами (или же если вы забыли заранее подготовить одноимённую БД), можно подключить БД после развёртывания.

Это делается двумя способами. Если вы забыли предварительно подготовить одноимённую БД, можно просто создать её позже при помощи команды:

dokku postgres:create app_name

Примечание: Имя БД и имя приложения могут совпадать.

Затем можно повторно загрузить приложение, поскольку переменная DATABASE_URL создаётся во время развёртывания приложения.

Можно также и просто подключить БД. Этот метод позволяет использовать разные имена для БД и приложения.

dokku postgres:create database_name

Примечание: На момент запуска этой команды приложение должно быть развёрнуто.

dokku postgres:link app_name database_name

Эта команда подключит БД к приложению.

Заключение

Dokku предназначен для расширения базовой функциональности приложений. Умение работать с плагинами – очень важный навык при разработке приложений.

Tags: ,

Добавить комментарий