Docker コンテナからの Elastic Beanstalk アプリケーションのデプロイ - AWS Elastic Beanstalk

Docker コンテナからの Elastic Beanstalk アプリケーションのデプロイ

Elastic Beanstalk では、ウェブアプリケーションを Docker コンテナからデプロイできます。Docker コンテナを使用すると、独自のランタイム環境を定義できます。通常は他のプラットフォームでサポートされていない、独自のプラットフォーム、プログラミング言語、およびアプリケーションの従属関係 (パッケージマネージャやツールなど) を選択することもできます。Docker コンテナは自己完結型で、これにはすべての設定情報と、ウェブアプリケーションが実行する必要のあるソフトウェアが含まれています。Elastic Beanstalk コンソールで定義されたすべての環境変数は、コンテナに渡されます。

Elastic Beanstalk で Docker を使用することにより、容量のプロビジョニング、負荷の分散、スケーリング、およびアプリケーションの状態の監視の詳細をすべて処理するインフラストラクチャが提供されます。Elastic Beanstalk と統合されているさまざまなサービスをサポートする環境で、ウェブアプリケーションを簡単に管理できます。これらの環境には、VPCRDS、および IAM が含まれますが、これらに限定されません。Docker の詳細については、「Docker: the Linux container engine」を参照してください。Docker のインストール方法、Docker が必要とするソフトウェア、Docker イメージを使用した Docker コンテナの起動方法などを確認できます。

この章のトピックでは、Elastic Beanstalk 環境についてある程度の知識があることを前提としています。Elastic Beanstalk を使用したことがない場合は、入門ガイドチュートリアルで基本知識を得てください。。

Docker プラットフォームファミリー

Elastic Beanstalk の Docker プラットフォームファミリには、いくつかのプラットフォームが含まれています。Amazon Linux 2 で実行される Docker プラットフォームは、長期的なサポートなど、最も大きなメリットを提供します。以降のセクションでは、Elastic Beanstalk が提供する Docker プラットフォームと、Amazon Linux 2 への推奨される移行パスを詳しく説明します。

各 Docker プラットフォームでサポートされているプラットフォームバージョンの詳細については、「AWS Elastic Beanstalk プラットフォーム」ドキュメントの「サポートされているプラットフォーム」ページを参照してください。

Docker プラットフォーム

Elastic Beanstalk は、Elastic Beanstalk Docker プラットフォームを実行する EC2 インスタンスに Docker イメージとソースコードをデプロイできます。このプラットフォームは、マルチコンテナ (および単一コンテナ) のサポートを提供します。また、Docker プラットフォームで Docker Compose ツールを活用して、アプリケーションの構成、テスト、デプロイを簡素化することもできます。

この Amazon Linux 2 Dockerプラットフォームには、次の利点があります。

  • 長期サポート。 Amazon Linux 2 プラットフォーム上の Docker には長期サポートがあり、セキュリティと機能のアップデートを提供しています。

  • Docker Compose の機能。 このプラットフォームでは、Docker Compose ツールが提供する機能を活用し、複数のコンテナを定義して実行できます。Elastic Beanstalk にデプロイする docker-compose.yml ファイルを含めることができます。

  • パブリックリポジトリまたはプライベートリポジトリからのアプリケーションイメージの使用。Elastic Beanstalk は、Docker Compose コマンドラインインターフェイスを呼び出します。docker-compose.yml ファイルを処理してアプリケーションイメージをプルし、コンテナ化されたアプリケーションとして実行します。

  • デプロイ中にコンテナーイメージをビルド。 デプロイしてコンテナとして実行する前に、アプリケーションイメージを事前にビルドする必要はありません。デプロイ時に、Dockerfile で依存関係を指定することで、コンテナイメージをゼロからビルドできます。

サンプルの詳細と Docker 環境の使用開始に関するヘルプについては、「Docker プラットフォームの使用」を参照してください。コンテナ定義形式およびその使用の詳細については、「Docker の設定」を参照してください。

以下のセクションは、以前の Amazon Linux AMI プラットフォームバージョン (Amazon Linux 2 より前) を使用する Elastic Beanstalk Docker 環境に関連しています。

Amazon Linux AMI ベースの Docker プラットフォームは、Docker イメージ (Dockerfile または Dockerrun.aws.json の定義に示される) とソースコードを Elastic Beanstalk 環境で実行される EC2 インスタンスにデプロイするために使用できます。この Docker プラットフォームは、インスタンスごとに 1 つのコンテナのみを実行します。

Docker 環境のサンプルと開始方法については、「Docker プラットフォームの使用」を参照してください。コンテナ定義形式とその使用の詳細については、「Docker の設定」を参照してください。

注記

このプラットフォームは、Amazon Linux AMI オペレーティングシステム (Amazon Linux 2 より前のバージョン) のみをサポートします。Docker プラットフォームは、Amazon Linux 2 にマルチコンテナ Docker 機能を提供します。

もう 1 つの汎用プラットフォームであるマルチコンテナ Docker では、Amazon Elastic Container Service (Amazon ECS) を使用して、Elastic Beanstalk 環境で複数の Docker コンテナを Amazon ECS クラスターにデプロイする操作が調整されます。環境におけるインスタンスはそれぞれ、Dockerrun.aws.json ファイルに定義される同じセットのコンテナで実行されます。Elastic Beanstalk 環境で Amazon Linux AMI プラットフォームバージョン (Amazon Linux 2 より前) を使用している場合は、マルチコンテナプラットフォームを使用して複数の Docker コンテナを各インスタンスにデプロイします。

マルチコンテナ Docker プラットフォームとその使用の詳細については、「マルチコンテナ Docker プラットフォーム (Amazon Linux AMI) の使用」を参照してください。「複数コンテナの Docker 設定」のトピックには Dockerrun.aws.json 形式のバージョン 2 が詳細説明されていて、これは Docker プラットフォームに使用されるバージョンと類似していますが、互換性はありません。また、マルチコンテナ環境をゼロからデプロイする手順をガイドするチュートリアルもあります。説明されている環境は、別のコンテナ内でその前に実行されている NGINX プロキシを持つ PHP ウェブサイトを実行します。

2 つの一般的な Docker プラットフォームに加えて、事前設定された Docker プラットフォームブランチがいくつか存在し、GlassFish を使用する Java または uWSGI を使用する Python など、複数の人気のあるソフトウェアスタックでアプリケーションを実行するために使用できます。事前設定のコンテナは、アプリケーションが使用するソフトウェアと一致する場合に使用してください。

注記

すべての事前設定された Docker プラットフォームブランチは、Amazon Linux AMI オペレーティングシステム (Amazon Linux 2 より前のバージョン) を使用します。GlassFish アプリケーションを Amazon Linux 2 に移行するには、汎用の Docker プラットフォームを使用して、GlassFish とアプリケーションコードを Amazon Linux 2 Docker イメージにデプロイします。詳細については、「Docker プラットフォームへの GlassFish アプリケーションのデプロイ: Amazon Linux 2 への移行パス」を参照してください。

詳細については、「事前設定済み Docker コンテナ 」を参照してください。