このモジュールでは、モノリシック node.js アプリケーション用のコンテナイメージを構築し、それを Amazon Elastic Container Registry にプッシュします。構築を開始する
コンテナを使用すると、アプリケーションのコード、設定、依存関係を、使いやすい構成要素に簡単にパッケージ化できるため、環境の一貫性、運用効率性、開発者の生産性、バージョンコントロールが実現できます。コンテナを使用すると、デプロイ環境に関係なく、迅速かつ確実に、また一貫してアプリケーションをデプロイできます。
スピード
コードの新規リリースが含まれたコンテナの起動は、大幅なデプロイメントオーバーヘッドなしで実行することができます。開発者のローカルマシンのコンテナで構築されたコードは、コンテナを移動するだけで簡単にテストサーバーに移動できるため、操作速度が向上します。このコンテナは構築時に、アプリケーションスタックの実行に必要な他のコンテナにリンクすることができます。
依存関係の制御とパイプラインの改善
Docker コンテナイメージは、アプリケーションのコードと依存関係のポイントインタイムキャプチャです。 これにより、エンジニアリング組織はアプリケーションライフサイクルのための標準パイプラインを作成することができます。以下に例を示します。
- 開発者がローカルでコンテナを構築し、実行する。
- 継続的インテグレーションサーバーが同じコンテナを実行し、それに対する統合テストを行って、それが期待を満たすものであることを確認する。
- 同じコンテナが、負荷テストまたは手動の QA を使用して実行時の動作をチェックできるステージング環境に送られる。
- 同じコンテナが本番環境に送られる。
インテグレーションとデプロイメントパイプラインのすべての段階で全く同じコンテナを構築、テスト、送信、実行することができるため、高品質で信頼性の高いアプリケーションの供給が極めて容易になります。
密度とリソース効率
コンテナは、複数の異種プロセスを単一のシステムで実行できるようにすることによって、リソース効率の向上を促進します。リソース効率は、コンテナが使用する分離と割り当て手法から自然に生じる結果です。コンテナは、ホストの CPU とメモリを特定の量だけ消費するように制限することができます。コンテナに必要なリソースと、基礎となるホストサーバーから利用できるリソースを理解することによって、小規模なホストで使用するコンピューティングリソースを適切なサイズに調整する、または単一の大規模ホストで実行されているプロセスの密度を高めて、可用性を向上させ、リソース消費を最適化することができます。
柔軟性
Docker コンテナの柔軟性は、移植性、デプロイメントの容易性、および小さなサイズに基づいています。VM に必要なインストールおよび設定とは対照的に、コンテナ内のパッケージングサービスは、それらのホスト間における容易な移動、他の隣接するサービスの障害からの分離、およびホストシステム上の誤ったパッチやソフトウェアアップグレードからの保護を可能にします。