DockerRun.AWS.json v2 파일 구성 - AWS Elastic Beanstalk

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

DockerRun.AWS.json v2 파일 구성

Dockerrun.aws.json v2Elastic Beanstalk 구성 파일로서, Elastic Beanstalk 환경의 ECS 클러스터에 호스팅된 도커 컨테이너 세트를 배포하는 방법을 설명합니다. Elastic Beanstalk 플랫폼은 컨테이너 정의를 포함하는 작업 정의를 ECS 생성합니다. ECS 이러한 정의는Dockerrun.aws.json 구성 파일에 설명되어 있습니다.

Dockerrun.aws.json파일의 컨테이너 정의는 ECS 클러스터의 각 Amazon EC2 인스턴스에 배포할 컨테이너를 설명합니다. 이 경우 Amazon EC2 인스턴스는 Docker 컨테이너를 호스팅하므로 호스트 컨테이너 인스턴스라고도 합니다. 구성 파일은 또한 도커 컨테이너를 마운트하기 위해 호스트 컨테이너 인스턴스에서 생성할 데이터 볼륨을 설명합니다. Elastic Beanstalk의 ECS 관리형 Docker 환경에 있는 구성 요소에 대한 자세한 내용과 다이어그램은 이 장의 앞부분을 참조하십시오. ECS관리형 Docker 플랫폼 개요

Dockerrun.aws.json 파일은 단독으로 사용하거나 추가 소스 코드와 함께 단일 아카이브에 압축할 수 있습니다. 와 함께 보관된 소스 코드는 Amazon EC2 컨테이너 인스턴스에 배포되며 /var/app/current/ 디렉터리에서 액세스할 수 있습니다. Dockerrun.aws.json

Dockerrun.aws.json v2

Dockerrun.aws.json 섹션에 포함되는 필드는 다음과 같습니다.

AWSEBDockerrunVersion

버전 번호를 ECS 관리형 Docker 2 환경의 값으로 지정합니다.

볼륨

Amazon EC2 컨테이너 인스턴스의 폴더 또는 소스 번들 (배포 대상/var/app/current) 에서 볼륨을 생성합니다. containerDefinitions 섹션의 컨테이너 정의 mountPoints를 사용하여 이러한 볼륨을 도커 컨테이너 안의 경로에 탑재합니다.

containerDefinitions

아래에서 세부적으로 설명하는 일련의 컨테이너 정의입니다.

mTLS 인증(선택 사항)

(선택 사항) Amazon S3에서 프라이빗 리포지토리에 대한 인증 데이터가 포함된 .dockercfg 파일의 위치입니다.

containerDefinitions볼륨 섹션은 Amazon ECS 작업 정의 파일의 해당 섹션과 동일한 형식을 Dockerrun.aws.json 사용합니다. 작업 정의 형식 및 작업 정의 파라미터의 전체 목록에 대한 자세한 내용은 Amazon Elastic Container Service 개발자 안내서의 Amazon ECS 작업 정의를 참조하십시오.

볼륨 포맷

volume 파라미터는 Amazon EC2 컨테이너 인스턴스의 폴더 또는 소스 번들 (배포 대상/var/app/current) 에서 볼륨을 생성합니다.

볼륨은 다음 형식으로 지정됩니다.

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

컨테이너 정의의 mountPoints를 사용하여 이러한 볼륨을 도커 컨테이너 안의 경로에 탑재합니다.

Elastic Beanstalk는 각 컨테이너에 대해 하나씩 로그용 추가 볼륨을 구성합니다. 로그를 호스트 인스턴스에 쓰려면 도커 컨테이너에서 이러한 볼륨을 탑재해야 합니다.

자세한 내용은 다음 컨테이너 정의 형식 섹션의mountPoints 필드를 참조하십시오.

컨테이너 정의 형식

다음 예는 containerDefinitions섹션에서 일반적으로 사용되는 파라미터의 하위 집합을 보여줍니다. 추가 선택적 파라미터를 사용할 수 있습니다.

Beanstalk 플랫폼은 컨테이너 정의를 포함하는 ECS 작업 정의를 생성합니다. ECS Beanstalk는 컨테이너 정의를 위한 매개 변수의 하위 집합을 지원합니다. ECS 자세한 내용을 알아보려면 Amazon Elastic Container Service 개발자 안내서컨테이너 인스턴스 AMI를 참조하세요.

Dockerrun.aws.json 파일에는 다음 필드가 포함된 하나 이상의 컨테이너 정의 객체가 포함됩니다.

name

컨테이너의 이름입니다. 최대 길이 및 허용된 문자에 대한 자세한 내용은 표준 컨테이너 정의 파라미터를 참조하십시오.

이미지

도커 컨테이너를 구축할 온라인 도커 리포지토리의 도커 이미지 이름입니다. 다음 규칙에 유의하십시오.

  • Docker Hub 공식 리포지토리 안의 이미지는 단일 이름을 사용합니다(예: ubuntu 또는 mongo).

  • Docker Hub의 다른 리포지토리에 저장된 이미지는 조직 이름으로 한정됩니다(예: amazon/amazon-ecs-agent).

  • Docker Hub 상의 다른 리포지토리 안의 이미지는 도메인 이름을 사용하여 추가로 한정됩니다(예: quay.io/assemblyline/ubuntu).

환경

컨테이너에 전달할 일련의 환경 변수입니다.

예를 들어, 다음 항목은 이름이 Container이고 값이 PHP인 환경 변수를 정의합니다.

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

컨테이너가 실패할 경우 작업을 중지해야 하면 true입니다. 필수적이지 않은 컨테이너는 인스턴스의 나머지 컨테이너에 영향을 미치지 않고 종료되거나 충돌할 수 있습니다.

메모리

컨테이너용으로 예약할 컨테이너 인스턴스에 있는 메모리 양입니다. 컨테이너 정의에서 memory 또는 memoryReservation 파라미터 중 하나 또는 모두에 0이 아닌 정수를 지정하십시오.

memoryReservation

컨테이너용으로 예약할 메모리의 소프트 제한(MiB)입니다. 컨테이너 정의에서 memory 또는 memoryReservation 파라미터 중 하나 또는 모두에 0이 아닌 정수를 지정하십시오.

mountPoints

마운트할 Amazon EC2 컨테이너 인스턴스의 볼륨과 이를 마운트할 Docker 컨테이너 파일 시스템의 위치 애플리케이션 콘텐츠가 포함된 볼륨을 탑재하면 컨테이너가 소스 번들에서 업로드하는 데이터를 읽을 수 있습니다. 로그 데이터를 기록할 로그 볼륨을 탑재하면 Elastic Beanstalk가 이들 볼륨에서 로그 데이터를 수집할 수 있습니다.

Elastic Beanstalk는 /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

다음 코드 조각은 두 개의 컨테이너가 있는 인스턴스에 대한 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" } ] } ] }