翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 つのアーカイブに追加のソースコードとともに圧縮できます。Dockerrun.aws.json
でアーカイブされるソースコードは Amazon EC2 コンテナインスタンスにデプロイされ、/var/app/current/
ディレクトリでアクセスできます。
Dockerrun.aws.json
v2
Dockerrun.aws.json
ファイルには次のセクションが含まれています。
- AWSEBDockerrunVersion
-
ECS マネージド Docker 環境のバージョン番号として値
2
を指定します。 - ボリューム
-
Amazon EC2 コンテナインスタンスのフォルダから、またはソースバンドル (
/var/app/current
にデプロイ) からボリュームを作成します。containerDefinitions
セクションでmountPoints
を使用している Docker コンテナ内のパスにこれらのボリュームをマウントします。 - containerDefinitions
-
コンテナ定義の配列。
- 認証 (オプション)
-
プライベートリポジトリの認証データが含まれる
.dockercfg
ファイルの Amazon S3 内の場所です。
Dockerrun.aws.json
の「containerDefinitions」と「volumes」のセクションは、Amazon ECS タスク定義ファイルの対応するセクションと同じ形式を使用します。タスク定義の形式およびタスク定義パラメータの完全な一覧については、「Amazon Elastic Container Service デベロッパーガイド」の「Amazon ECS タスク定義」を参照してください。
ボリュームフォーマット
volume パラメータは、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 つの名前 (例:
ubuntu
、mongo
) を使用します。 -
Docker ハブの他のリポジトリのイメージは、組織名で修飾されます(例:
amazon/amazon-ecs-agent
)。 -
他のオンラインリポジトリのイメージは、さらにドメイン名で修飾されます (例:
quay.io/assemblyline/ubuntu
)。
-
- 環境
-
コンテナに渡す環境変数の配列。
たとえば、次のエントリでは、
Container
という名前とPHP
という値を使用して環境変数を定義しています。"environment": [ { "name": "Container", "value": "PHP" } ],
- essential
-
コンテナが失敗した場合にタスクを停止する場合は True。重要でないコンテナは、インスタンスで他のコンテナに影響を与えることなく、終了またはクラッシュできます。
- メモリ
-
コンテナ用に予約するコンテナインスタンスのメモリの量。コンテナ定義で
memory
とmemoryReservation
パラメータの一方または両方に 0 以外の整数を指定します。 - memoryReservation
-
コンテナ用に予約するメモリのソフト制限 (MiB 単位)。コンテナ定義で
memory
とmemoryReservation
パラメータの一方または両方に 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"
}
]
}
]
}