Dockerrun.aws.json v2 ファイルの設定 - AWS Elastic Beanstalk

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Dockerrun.aws.json v2 ファイルの設定

Dockerrun.aws.json v2 は、Elastic Beanstalk 環境の ECSクラスターでホストされている一連の Docker コンテナをデプロイする方法を説明する Elastic Beanstalk 設定ファイルです。Elastic Beanstalk プラットフォームは、ECSコンテナ定義 を含むECSタスク定義 を作成します。 これらの定義は Dockerrun.aws.json 設定ファイルに記述されます。

Dockerrun.aws.json ファイル内のコンテナ定義は、ECSクラスター内の各 Amazon EC2インスタンスにデプロイするコンテナを記述します。この場合、Amazon EC2インスタンスは Docker コンテナをホストするため、ホストコンテナインスタンス とも呼ばれます。設定ファイルは、Docker コンテナがマウントするホストコンテナインスタンス上に作成するデータボリュームも記述します。Elastic Beanstalk の ECSマネージド Docker 環境のコンポーネントの詳細と図については、この章の前ECS マネージド Docker プラットフォームの概要半を参照してください。

Dockerrun.aws.json ファイルは単独で使用するか、1 つのアーカイブに追加のソースコードとともに圧縮できます。でアーカイブされたソースコードは Amazon Dockerrun.aws.json EC2コンテナインスタンスにデプロイされ、 /var/app/current/ ディレクトリからアクセスできます。

Dockerrun.aws.json v2

Dockerrun.aws.json ファイルには次のセクションが含まれています。

AWSEBDockerrunVersion

2 ECS マネージド Docker 環境の値としてバージョン番号を指定します。

ボリューム

Amazon EC2コンテナインスタンスのフォルダ、またはソースバンドル ( にデプロイ) からボリュームを作成します/var/app/currentcontainerDefinitions セクションで mountPoints を使用している Docker コンテナ内のパスにこれらのボリュームをマウントします。

containerDefinitions

コンテナ定義の配列。

認証 (オプション)

プライベートリポジトリの認証データが含まれる .dockercfg ファイルの Amazon S3 内の場所です。

containerDefinitionsおよび ボリュームセクションは、Amazon ECSタスク定義ファイルの対応するセクションと同じ形式Dockerrun.aws.jsonを使用します。タスク定義形式とタスク定義パラメータの完全なリストの詳細については、「Amazon Elastic Container Service デベロッパーガイド」の「Amazon ECSタスク定義」を参照してください。

ボリュームフォーマット

ボリュームパラメータは、Amazon EC2コンテナインスタンスのフォルダまたはソースバンドル ( にデプロイ) からボリュームを作成します/var/app/current

ボリュームは次の形式で指定します:

"volumes": [ { "name": "volumename", "host": { "sourcePath": "/path/on/host/instance" } } ],

コンテナ定義の mountPoints を使用して、これらのボリュームを Docker コンテナ内のパスにマウントします。

Elastic Beanstalk は、コンテナごとにログ用の追加のボリュームを設定します。これらのボリュームは、ホストインスタンスにログを書き込むために、Docker コンテナによってマウントされる必要があります。

詳細については、次の「コンテナ定義の形式」セクションの「mountPoints」フィールドを参照してください。

コンテナの定義形式

次の例は、 containerDefinitionsセクションで一般的に使用されるパラメータのサブセットを示しています。そのほかのオプションパラメータも使用可能です。

Beanstalk プラットフォームは、ECSコンテナ定義 を含むECSタスク定義 を作成します。 Beanstalk は、ECSコンテナ定義のパラメータのサブセットをサポートしています。詳細については、「Amazon Elastic Container Service デベロッパーガイド」の「コンテナ定義」を参照してください。

Dockerrun.aws.json ファイルには、次のフィールドとともに 1 つ以上のコンテナ定義オブジェクトの配列が含まれます。

name

コンテナの名前。最大長と使用できる文字については、「標準のコンテナ定義のパラメータ」を参照してください。

イメージ

Docker コンテナの構築元となるオンライン Docker リポジトリの Docker イメージの名前。次の規則があります。

  • Docker ハブの公式リポジトリのイメージでは、1 つの名前 (例: ubuntumongo) を使用します。

  • Docker ハブの他のリポジトリのイメージは、組織名で修飾されます(例: amazon/amazon-ecs-agent)。

  • 他のオンラインリポジトリのイメージは、さらにドメイン名で修飾されます (例: quay.io/assemblyline/ubuntu)。

環境

コンテナに渡す環境変数の配列。

たとえば、次のエントリでは、Container という名前と PHP という値を使用して環境変数を定義しています。

"environment": [ { "name": "Container", "value": "PHP" } ],
essential

コンテナが失敗した場合にタスクを停止する場合は True。重要でないコンテナは、インスタンスで他のコンテナに影響を与えることなく、終了またはクラッシュできます。

メモリ

コンテナ用に予約するコンテナインスタンスのメモリの量。コンテナ定義で memorymemoryReservation パラメータの一方または両方に 0 以外の整数を指定します。

memoryReservation

コンテナ用に予約するメモリのソフト制限 (MiB 単位)。コンテナ定義で memorymemoryReservation パラメータの一方または両方に 0 以外の整数を指定します。

mountPoints

Amazon EC2コンテナインスタンスからマウントするボリューム、およびマウントする Docker コンテナファイルシステム上の場所。アプリケーションコンテンツを含むボリュームをマウントすると、コンテナはソースバンドルにアップロードしたデータを読み取ることができます。ログデータを書き込むためのログボリュームをマウントすると、Elastic Beanstalk は、これらのボリュームからログデータを収集することができます。

Elastic Beanstalk はコンテナインスタンスにログボリュームを作成します。Docker コンテナごとに 1 つ、場所は /var/log/containers/containername です。これらのボリュームの名前は awseb-logs-containername で、ログが書き込まれるコンテナファイル構造内の場所にマウントします。

たとえば、次のマウントポイントは、コンテナの nginx ログの場所を、nginx-proxy コンテナ用に Elastic Beanstalk が生成したボリュームにマッピングします。

{ "sourceVolume": "awseb-logs-nginx-proxy", "containerPath": "/var/log/nginx" }
portMappings

コンテナのネットワークポートをホストのポートにマッピングします。

links

リンク先のコンテナのリスト。リンクされたコンテナはお互いを検出し、安全に通信できます。

volumesFrom

別コンテナからのボリュームをすべてマウントします。たとえば、web という名前のコンテナからボリュームをマウントするには、次の手順を実行します。

"volumesFrom": [ { "sourceContainer": "web" } ],

認証形式 – プライベートリポジトリからのイメージを使用

authentication セクションには、プライベートリポジトリの認証データが含まれています。このエントリはオプションです。

認証ファイルを authentication ファイルの Dockerrun.aws.json パラメータ内に含む Amazon S3 バケットに関する情報を追加します。authentication パラメータに有効な Amazon S3 バケットとキーが含まれていることを確認します。Amazon S3 バケットは、バケットを使用している環境と同じリージョンでホストする必要があります。Elastic Beanstalk は、他のリージョンでホストされている Amazon S3 バケットからファイルをダウンロードしません。

以下の形式が使用されます。

"authentication": { "bucket": "amzn-s3-demo-bucket", "key": "mydockercfg" },

認証ファイルの作成とアップロードについては、「Elastic Beanstalk のプライベートリポジトリからのイメージの使用」を参照してください。

Dockerrun.aws.json v2 の例

以下のスニペットは、2 つのコンテナを持つインスタンスの Dockerrun.aws.json ファイルの構文を示す例です。

{ "AWSEBDockerrunVersion": 2, "volumes": [ { "name": "php-app", "host": { "sourcePath": "/var/app/current/php-app" } }, { "name": "nginx-proxy-conf", "host": { "sourcePath": "/var/app/current/proxy/conf.d" } } ], "containerDefinitions": [ { "name": "php-app", "image": "php:fpm", "environment": [ { "name": "Container", "value": "PHP" } ], "essential": true, "memory": 128, "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true } ] }, { "name": "nginx-proxy", "image": "nginx", "essential": true, "memory": 128, "portMappings": [ { "hostPort": 80, "containerPort": 80 } ], "links": [ "php-app" ], "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true }, { "sourceVolume": "nginx-proxy-conf", "containerPath": "/etc/nginx/conf.d", "readOnly": true }, { "sourceVolume": "awseb-logs-nginx-proxy", "containerPath": "/var/log/nginx" } ] } ] }