2017-04-25 13 views
1

私は組織のCI/CDワークフローを設定していますが、パズルの最後の部分が欠落しています。確かにこれは解決された問題ですか、自分で書く必要がありますか?ドッカーCDワークフロー - ドッカーホストが新しいイメージを引き出して展開する

完全な画像。

私はAWS上でいくつかのEC2インスタンスを実行しています。各インスタンスは、ドッカーをネイティブswarmモードで実行しています。 docker service create ...を介して手動で開始したサービスがいくつか実行されています。

開発者がソースコードをコミットすると、トリガーがジェンキンズに送信され、新しいコードが取得され、新しいドッカー画像が作成され、プライベートレジストリにプッシュされます。

ここまではうまくいきましたが、私のドッカーホストに新しい画像を取得するにはどうしたら新しいコンテナに自動的に更新されますか?

新しい画像がプッシュされると、レジストリが設定可能なエンドポイントにイベントを送信できることをDockerのマニュアルに記載しています(here)。これは私のドッカーホストが新しいイメージを引っ張ってその新しいバージョン(同じenvフラグ、ラ​​ベルなど)を使ってサービスを停止、破棄、再起動することによって自動的に反応したいのですが、私は見つけていません私のユースケースに合ったこれに対する解決策。

私はv2tec/watchtowerを見つけましたが、この質問を書いている時点では、それほど意識していないし、プライベートレジストリから引き出すこともできません。

好ましくは、(レジストリの設定をポイントした後で)レジストリイベントを聞くドッカーマネージャーにデプロイできるドッカーイメージが必要です。必要な魔法を実行します。

コストは問題ですが、時間はそれほどではありませんので、私は自分のソリューションを書くのは、これに有料のサービスを採用するよりも傾いています。

+0

ここで、プライベートレジストリとして参照すると、Amazon EC2コンテナレジストリまたはDockerhubですか?あなたが持っている1つのオプションは、リモートSSHプラグインを使用してジェンキンからマスターを襲って新しいイメージをプルし、イメージプッシュでサービスをアップデートすることです。 – Ashan

+0

プライベートレジストリでは、ドッカーレジストリを 'docker pull registry'経由で使用することを意味します。 sshプラグインを使用していただきありがとうございます。私はこれを考慮する。 – jbr

答えて

0

あなたが持っているオプションは、を使ってJenkinsからswarm masterをSSHし、新しいイメージがレジストリにプッシュされると新しいイメージをプルしてサービスを更新することです。