Dokkuプラグインを使用して追加機能にアクセスする方法
注:このガイドが作成されてから、Dokkuプロジェクトは大幅に変更されました。 以下の手順は、Dokkuプロジェクトの現在の状態を反映していない場合があります。
序章
Dokkuは、本番環境でコードを簡単に起動するために使用できるアプリケーションデプロイメントソリューションです。 その結果、アプリケーション環境が自動的に構成され、必要なソフトウェアがインストールおよび実装されます。
Dokkuは、アプリケーションリソースは実際のアプリケーションとは別のコンポーネントとして処理する必要があるという哲学に準拠しています。 これにより、追加の構成をあまり行わなくても、リソースまたはメインアプリケーションコードを簡単に交換できる柔軟な関係が作成されます。 Dokkuは、プラグインシステムを介して外部リソースを処理します。
このガイドでは、Dokkuのプラグインシステムを利用してプロジェクトの機能を拡張し、アプリケーションを必要なバックエンドにリンクする方法について説明します。 また、アプリケーションの監視と管理に役立つ他のプラグインについても検討します。
前提条件
この記事は、Dokkuワンクリックインストールを使用してDokkuの作業構成がインストールされていることを前提としています。 Dokku構成を完了するには、少なくともこのチュートリアルのステップ2まで完了する必要があります。
どのような種類のプラグインが利用できますか?
Dokkuは簡単に拡張できるように構築されており、簡単に接続できるプラグインシステムを備えています。 実際、コア機能と見なされる操作の多くは、Dokkuのプラグインによって処理されます。 これにより、メインアプリケーションをスリムでモジュール式に保つことができます。
ほとんどの人がプラグインシステムに求めている主なものは、データベースへのアクセスです。 Dokkuは、コミュニティプラグインを通じて、 MariaDB 、 PostgreSQL 、 MongoDB 、Redisなどの多くの一般的なデータベースシステムへのアクセスを提供します。 データベースプラグインの完全なリストを見つけることができます。
データベースアクセス以外にも、複数のプロセスマネージャー用のプラグインがあります。 Dokkuは、実行する必要のあるプロセスタイプと、それらを実行するために必要なコマンドをリストした「Procfile」を介してプロセスを実行します。 デフォルトでは、Dokkuは「Web」プロセスのみを実行します。
他のタイプのプロセス(ワーカーなど)を実行するには、Procfileを実行して他のタイプのプロセスを実行するプロセスマネージャーを使用できます。 選択できるものは複数ありますが、基本的にはすべて同じことを行います。 現在の選択には、サーカス、ショアマン、および監視対象が含まれます。 追加のプロセスタイプを開始することに加えて、これらの一部には、クラッシュしたアプリケーションを再起動する機能もあります。
一般的なプラグインの説明
ほとんどのプラグインは、次の一般的な形式を使用してインストールおよび構成されます。 1つの簡単なコマンドでダウンロードしてインストールできます。
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 . . .
これは、インストールするプラグインの数に関係なく、ドキュメントはすべて1か所にあることを意味します。 新しいプラグインをインストールした後、dokku help
を実行することをお勧めします。
プラグインワークフローの例
デプロイメントの状況でこれらのプラグインの1つをどのように使用するかについての良いアイデアを提供するために、手順の例を見ていきます。 アプリケーションがPostgreSQLデータベースを使用していると想定します。
ワンタイムセットアップ
PostgreSQLプラグインを初めて使用する前に、GitHubから適切なファイルをダウンロードし、プラグインコンポーネントとその依存関係をインストールする必要があります。
dokku plugin:install https://github.com/dokku/dokku-postgres.git
アプリケーション固有の手順
プラグインをインストールすると、デプロイするすべてのアプリケーションでプラグインを使用できます。 プロセスは、アプリケーションを既にデプロイしているかどうか、および特定のプラグインの推奨手順に大きく依存します。
たとえば、PostgreSQLプラグインを使用すると、デプロイ前にデータベースインスタンスを作成できます。 ただし、MongoDBプラグインでは、アプリケーションをデプロイし、データベースを作成してから、アプリケーションを再プッシュする必要があります。
PostgreSQLプラグインはかなり柔軟性があります。 どちらの状況にも対応できますが、最初にデータベースを作成する場合は、手順が1つ少なくなります。
最初にデータベースを作成する
最初にデータベースを作成していて、展開時にデータベースをアプリケーションに自動的にリンクする場合は、アプリケーションで使用する予定のデータベースと同じ名前を選択する必要があります。 PostgreSQLの一般的な構文は次のとおりです。
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
という環境変数を設定するため、この情報を使用する必要はありません。 この変数にアクセスし、プログラムで使用して柔軟性を維持できます。
この情報にdoアクセスする必要がある場合は、次のように入力することでいつでも呼び出すことができます。
dokku postgres:info app_name
アプリケーション用にデータベースが作成されたので、通常どおりgitを使用してアプリケーションをDokkuにプッシュします。 次の出力では、最後に、アプリケーションがデータベースに正しくリンクされていることがわかります。
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
アプリを最初にデプロイする
アプリケーションとは異なる名前のデータベースを使用してアプリケーションをデプロイする場合、またはアプリケーションをデプロイする前にデータベースをデプロイするのを忘れた場合は、後でいつでもデータベースをリンクできます。
この場合、次の2つのいずれかを実行できます。 データベースの作成を単に忘れた場合は、matchingという名前で通常のcreatedatabaseコマンドを発行するだけです。
dokku postgres:create app_name
その後、アプリケーションの展開中にDATABASE_URL
変数が作成されるため、アプリケーションを再プッシュできます。
ただし、リンクすることもできます。 これは、データベースに別の名前を使用する場合にも必要です。データベースを作成してからリンクすることができます。
dokku postgres:create database_name
(この時点で、アプリケーションをデプロイする必要があります)
dokku postgres:link app_name database_name
これにより、データベースがアプリケーションにリンクされ、プログラムが正しく機能するようになります。
結論
Dokkuは、モジュラー機能を利用するように設計されています。 これは、主要な開発作業に焦点を合わせ続けるのに役立ち、コアモデルを拡張する簡単な方法を提供します。 プラグインを活用する方法を学ぶことは、ソフトウェアからほとんどの機能を引き出すために不可欠です。
Dokkuに必要な機能が不足していることに気付いた場合は、自分でプラグインを作成することを検討してください。 Dokkuのプラグインを作成する場合は、Dokkuプラグインページを編集してプラグインを紹介できます。