4

1 日に 5 ~ 10 回デプロイする場合、デプロイするたびに Docker イメージを完全に再構築してプッシュすることは本当に実用的ですか?

CircleCI のContinuous Integration and Delivery with Dockerに記載されている利点を認めます。つまり、次のとおりです。

Elastic Beanstalk では、ビルドされたイメージの代わりに Dockerfile と関連するソース コードをデプロイすることもできますが、CircleCI でイメージを事前にビルドし、その上で何らかの形式の検証を実行すると、ビルド環境を削除するため、デプロイをより決定論的にすることができます。テストと本番の間で異なる変数として。

ただし、すべての依存関係とソース コードを含めると、完全にビルドされた webapp イメージは 1 GB 近くになります。ビルド間で実質的に 99% が変わらない場合、最大 200GB/月 (つまり、毎日 10 コミット、継続的にデプロイ) をデプロイすることが実際的であるかわかりません。つまり、機能を追加するために変更された HTML、JS、または CSS の 1,000 分の価値があるだけかもしれません。Docker イメージにほとんど変更されないソフトウェアが含まれ、残りはバンドルの一部として圧縮されるアプローチを好みます。これにより、自己完結型の展開ファイルが作成されますが (ダウンロードを必要とする依存関係がなくなります)、ビルド時間と帯域幅が大幅に削減されます。

4

1 に答える 1

2

現在受け入れられているアプローチは、マシン イメージ内に依存関係やオペレーティング システムなどを持つ基本的な Docker イメージを含めることです。その Docker イメージをFROMDockerfile の行として使用します。これにより、Docker のイメージ レイヤーが利用され、差分のみがダウンロードされます。

依存関係は時間の経過とともに変更されるため、子 Dockerfile に引き続きインストールすることをお勧めしますが、それらのほとんどを基本イメージに保持して、ダウンロードするものが少なくなるようにしてください。

于 2014-12-25T00:33:12.410 に答える