2017-05-23 4 views
0

私が働いているところで内部的に使用される小さなウェブサイト(Ruby/Sinatra)を開発しています。 (単純に、いくつかのソースデータを集めてレポートを生成します)DockerとCI/CD - 最終展開のステップは何ですか?

私はDockerを使ってデプロイしたいのですが、私の開発環境で動作する設定をしたいのですが、私は "production (私たちはJenkinsを使用しています)。

私はDockerを使用した展開ワークフローについて多くの記事を読んだことがありますが、それらはすべて「停止」してからDockerレジストリに画像をプッシュするようです。欠落しているように見えるのは、そのイメージを取得して実際にアプリケーションを更新する方法です。

すべてのアプリケーションは異なる可能性がありますが、次のステップは何ですか?私はChef、Puppet、Ansibleのようなさまざまなフレームワークを知っていますが、私の質問は本当に - どのようにCI/CDパイプラインに組み込むのですか?例えば。ジョブがプロダクションサーバに変更を「プッシュ」するか、プロダクションサーバでJenkinsスレーブを実行してサーバ上で直接ジョブを実行する必要がありますか?

答えて

1

docker-swarm、kubernetes、rancherのようなオーケストレーションツールがいくつかあります。 docker swarmでは、サービスを作成し、1つのインスタンス(青緑色ではありません)で青緑色のデプロイメント方法でバージョンを更新できます。ドッカーを使用している場合は、実行中のコンテナをチェックし、それが実行されている場合は、最新のイメージバージョンでドッカーコンテナを起動してください。

0

これは、アプリケーションの実行方法によって異なります。私の場合は、システムドスクリプトで「ドッカーを実行する」という呼び出しがあります。停止した場合に再起動するように設定されています。

私のJenkinsfileでは、イメージをレジストリにプッシュした後、私は "ドッカープル"を行います(私のJenkinsエージェントは、アプリケーションが実行されているのと同じボックスで実行されています)。そして、 "ドッカーストップ"これにより、アプリケーションが終了してから再起動するため、直前に取得した新しいバージョンが取得され、新しいバージョンが実行されます。

+0

Davidさんありがとうございます。あなたは「私はドッカーを引っ張る」と言うとき、それは手作業のステップですか?それともジェンキンスの仕事ですか?後者の場合、ジェンキンスの仕事は何を引き起こしますか?あなたのパイプラインの一部ですか? –

+0

ああ、BTW - 私はあなたが再起動ポリシーを含むドッカーを構成できると理解しています。 https://blog.codeship.com/ensuring-containers-are-always-running-with-dockers-restart-policy/ systemdの 'docker run'は不要かもしれませんか? –

関連する問題