「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」
複数コンテナの Docker 設定
Dockerrun.aws.json
ファイルは、Docker コンテナのセットを Elastic Beanstalk アプリケーションとしてデプロイする方法を記述する、Elastic Beanstalk
固有の JSON ファイルです。Dockerrun.aws.json
ファイルを複数コンテナの Docker 環境で使用できます。
Dockerrun.aws.json
は、環境の各コンテナインスタンス (Docker コンテナをホストする Amazon EC2 インスタンス) にデプロイするコンテナを示すとともに、マウントするコンテナのホストインスタンスで作成するデータボリュームを示します。
Dockerrun.aws.json
ファイルは単独で使用するか、1 つのアーカイブに追加のソースコードとともに圧縮できます。Dockerrun.aws.json
でアーカイブされるソースコードは Amazon EC2 コンテナインスタンスにデプロイされ、/var/app/current/
ディレクトリでアクセスできます。config の volumes
セクションを使用して、ホストインスタンスで実行されている Docker コンテナのファイルボリュームを指定します。埋め込みコンテナ定義の mountPoints
セクションを使用して、これらのボリュームを Docker コンテナのアプリケーションが使用できるマウントポイントにマッピングします。
Dockerrun.aws.json v2
[Dockerrun.aws.json
] ファイルには 3 つのセクションが含まれます。
- AWSEBDockerrunVersion
-
複数コンテナの Docker 環境にはバージョン番号として値
2
を指定します。 - containerDefinitions
-
以下に詳しく説明するコンテナ定義の配列です。
- ボリューム
-
Amazon EC2 コンテナインスタンスのフォルダから、またはソースバンドル (
/var/app/current
にデプロイ) からボリュームを作成します。コンテナ定義のmountPoints
を使用して、これらのボリュームを Docker コンテナ内のパスにマウントします。注記 Elastic Beanstalk は、コンテナごとにログ用の追加のボリュームを設定します。これらのボリュームは、ホストインスタンスにログを書き込むために、Docker コンテナによってマウントされる必要があります。詳細については、「コンテナの定義形式」を参照してください。
ボリュームは次の形式で指定します:
"volumes": [ { "name": "
volumename
", "host": { "sourcePath": "/path/on/host/instance
" } } ], - 認証
-
(オプション) プライベートリポジトリの認証データが含まれる
.dockercfg
ファイルの Amazon S3 内の場所です。以下の形式が使用されます。"authentication": { "bucket": "
", "key": "DOC-EXAMPLE-BUCKET
mydockercfg
" },詳細については、「プライベートリポジトリからのイメージの使用」を参照してください。
以下のスニペットは、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"
}
]
}
]
}
プライベートリポジトリからのイメージの使用
認証ファイルを Dockerrun.aws.json
ファイルの authentication
パラメータ内に含む Amazon S3 バケットに関する情報を追加します。authentication
パラメータに有効な Amazon S3 バケットとキーが含まれていることを確認します。Amazon S3 バケットは、バケットを使用している環境と同じリージョンでホストする必要があります。Elastic
Beanstalk は、他のリージョンでホストされている Amazon S3 バケットからファイルをダウンロードしません。
認証ファイルの作成とアップロードについては、「プライベートリポジトリからのイメージの使用」を参照してください。
コンテナの定義形式
Dockerrun.aws.json
のコンテナ定義セクションとボリュームセクションは、Amazon ECS タスク定義ファイルの対応するセクションと同じ形式を使用します。
一般的に使用されるパラメータのサブセットには以下のようなものがあります。そのほかのオプションパラメータも使用可能です。タスク定義の形式およびタスク定義パラメータの完全な一覧については、Amazon Elastic Container Service 開発者ガイドの「Amazon ECS タスク定義」を参照してください。
Dockerrun.aws.json
ファイルには、次のフィールドとともに 1 つ以上のコンテナ定義オブジェクトの配列が含まれます。
- name
-
コンテナの名前。最大長と使用できる文字については、「標準のコンテナ定義のパラメータ」を参照してください。
- image
-
Docker コンテナの構築元となるオンライン Docker リポジトリの Docker イメージの名前。次の規則があります。
-
Docker ハブの公式リポジトリのイメージでは、1 つの名前 (例:
ubuntu
、mongo
) を使用します。 -
Docker ハブの他のリポジトリのイメージは、組織名で修飾されます(例:
amazon/amazon-ecs-agent
)。 -
他のオンラインリポジトリのイメージは、さらにドメイン名で修飾されます (例:
quay.io/assemblyline/ubuntu
)。
-
- environment
-
コンテナに渡す環境変数の配列。
たとえば、次のエントリでは、
Container
という名前とPHP
という値を使用して環境変数を定義しています。"environment": [ { "name": "Container", "value": "PHP" } ],
- essential
-
コンテナが失敗した場合にタスクを停止する場合は True。重要でないコンテナは、インスタンスで他のコンテナに影響を与えることなく、終了またはクラッシュできます。
- memory
-
コンテナ用に予約するコンテナインスタンスのメモリの量。コンテナ定義で
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" } ],