現在、Jenkins ジョブを構成してサービスをリリースし、他のサービスをテスト、ステージング、および本番環境にデプロイしています。リリース ジョブの一部として、プライベート Docker リポジトリにプッシュされるサービス バイナリ (およびそのすべての依存関係) を含む Docker イメージを作成します (新しいタグは新しいバージョンで作成されます)。これまでのところ、この (または古い) バージョンを Jenkins からさまざまな環境にデプロイしたり、サービスの特定のバージョンをプルしてローカルで実行したりするのは簡単なので、これはうまく機能します。私の質問は、継続的デリバリーに移行した場合、このアプローチがうまく機能するかどうかです。ビルドが成功するたびに、新しい Docker タグを作成してプライベート リポジトリにプッシュし、イメージをテスト環境にデプロイするという考え方です。私の懸念は、これが 1 日に数回行われると、大量の Docker タグ/レイヤーをダウンロードする必要があることです。時間が経つにつれて、イメージを取得するのに時間がかかるのではないかと心配しています (そして、私が気付いていない他の問題があるかもしれません)。
したがって、質問をより明確に言い換えると、次のようになります。
- 多くの Docker タグを作成しても問題ないですか、それとも避けるべきものですか?
- ベース イメージ (OS など) を用意し、ソース管理システムのタグからサービス バイナリをビルドしてから、展開時にさまざまな環境に転送されるイメージをビルドする方がよいでしょうか?
- 他の提案?