DockerHub & Arukas 連携Webhook アダプター
関連記事:Qiita:arukas-shipでプルリク駆動デリバリー
DockerHubへのDockerイメージpush時に送信できるWebhookを利用して ArukasへのDockerコンテナのデプロイを行います。
DockerのコンセプトであるBuild, Ship, and Run Any App, Anywhere
のうち、Ship
を担当するものです。
- Build : 手元のマシン(開発時)、DockerHub(デプロイ時)
- Ship :
arukas-ship
- Run : Arukas
arukas-ship
を用いることで、手元のマシンで開発/テストしたDockerfileなどをGithub/Bitbucketへpushすれば
DockerHubでビルド(Build)、arukas-ship
でArukasへデプロイ(Ship)、Arukasで実行(Run)出来るようになります。
DockerHubからのWebHookを待ち受けるためのコンテナを起動します。 あらかじめArukas APIキーを取得しておいてください。
Arukas コントロールパネルから新しいアプリケーションを作成します。
各項目は以下のように入力してください。
項目名 | 入力内容 |
---|---|
App Name | 任意 |
Image | yamamotofebc/arukas-ship |
Instance | 任意(1 〜10 ) |
Memory | 任意(256 or 512 ) |
Endpoint | 任意(ただし.arukascloud.io 上で一意でないと登録できない) |
Port | 8080 (下記のSHIP_PORT と同じ値を設定する) |
Env | 下記の4つを登録 |
Cmd | なし |
ARUKAS_JSON_API_TOKEN
: Arukas APIトークンARUKAS_JSON_API_SECRET
: Arukas APIシークレットSHIP_TOKEN
: 任意のランダムな文字列SHIP_PORT
: 8080
SHIP_TOKEN
はDockerHubからのWebHook登録時の認証用です。
WebHookのURLにここで指定したトークンを含めることで認証を行っています。
任意の十分に長いランダムな文字列を指定してください。
Arukas上でコンテナを起動したらEndpointのURLを控えておきます。
DockerHubでAutomation Buildリポジトリを追加します。
WebHookの設定を行います。
WebHook URLは以下のように設定します。
[控えておいたEndpointのURL]?token=[SHIP_TOKENに設定した文字列]&app=[任意のアプリケーション名]
例: https://shipping.arukascloud.io?token=YOUR_SHIP_TOKEN&app=TestApplication
app
パラメータに指定した名前でArukas上にデプロイが行われます。
あとはAutomation Buildの設定をおこなっているGitリポジトリにPushすれば 自動でArukasへのデプロイが行われます。
すでにArukasへデプロイ済みのコンテナの場合は更新が行われます。
Arukasコントロールパネル上でエラーが出ていないか確認してください。
エラーが出ていない場合、イメージ名yamamotofebc/arukas-ship
が正しいか確認してみてください。
Arukasコントロールパネル上で表示されるEndpoint URLに直接ブラウザなどでアクセスしてみてください。 実際にアプリのデプロイまで確認したい場合はこちらの仕様に沿ったデータを Endoint URLあてにPOSTしてみてください。
以下のようなパラメーターでデプロイしています。
App Name
: DockerHubで設定するWebhook URLに含まれるapp
パラメータの値Image
: DockerHubでWebhook登録したリポジトリのlatest
イメージInstance
: 1Memory
: 256Endpoint
: 空欄(Arukasによる自動割り当て)Port
: TCP 80番Env
: なしCmd
: なし
これらを変更したい場合、あらかじめArukas上に同じApp Name
を持つアプリを
作成しておけばOKです。下記質問もご覧ください。
あらかじめArukas上に同じApp Name
を持つアプリを作成しておけばOKです。
arukas-ship
は、同じApp Name
を持つアプリがすでにArukas上に存在する場合は
該当アプリの更新(パラメータ変更/コンテナ再起動)を行います。
This project is published under Apache 2.0 License.
- Kazumichi Yamamoto (@yamamoto-febc)