(레거시) Amazon Linux에서 실행되는 멀티컨테이너 Docker에서 Amazon Linux 2에서 실행되는 Docker 플랫폼 브랜치로 마이그레이션 - AWS Elastic Beanstalk

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

(레거시) Amazon Linux에서 실행되는 멀티컨테이너 Docker에서 Amazon Linux 2에서 실행되는 Docker 플랫폼 브랜치로 마이그레이션

64비트 Amazon Linux 2에서 실행되는 ECS 플랫폼 브랜치 릴리스에 앞서, Elastic Beanstalk는 64비트 Amazon Linux에서 실행되는 멀티컨테이너 Docker 플랫폼 브랜치를 기반으로 한 환경을 보유한 고객을 위해 Amazon Linux 2로의 대체 마이그레이션 경로를 제공했습니다. 이 주제에서는 해당 마이그레이션 경로에 대해 설명하며, 해당 마이그레이션 경로를 완료한 모든 고객을 위한 참조로 이 문서에 유지됩니다.

이제 64비트 Amazon Linux 에서 실행되는 멀티컨테이너 Docker 플랫폼 브랜치를 기반으로 하는 환경을 가진 고객에게 64비트 Amazon Linux 2에서 실행되는 ECS 플랫폼 브랜치로 마이그레이션을 권장합니다. 대체 마이그레이션 경로와 달리, 이 접근 방식은 Amazon ECS를 사용하여 ECS 관리형 Docker 환경에 대한 컨테이너 배포를 조정합니다. 이 측면은 좀 더 간단한 접근 방식을 지원합니다. 소스 코드에 대한 변경이 필요하지 않으며, 동일한 Dockerrun.aws.json v2가 지원됩니다. 자세한 정보는 Amazon Linux에서 실행되는 멀티컨테이너 Docker를 Amazon Linux 2023의 ECS로 마이그레이션을 참조하십시오.

Amazon Linux AMI의 멀티컨테이너 Docker 플랫폼에서 실행되는 애플리케이션을 Amazon Linux 2 Docker 플랫폼으로 마이그레이션 할 수 있습니다. Amazon Linux AMI의 멀티컨테이너 Docker 플랫폼을 사용하려면 컨테이너로 실행할 미리 빌드된 애플리케이션 이미지를 지정해야 합니다. 마이그레이션 후에는 Amazon Linux 2 Docker 플랫폼에서 Elastic Beanstalk가 배포 중에 컨테이너 이미지를 빌드할 수 있으므로 더 이상 이러한 제한이 없습니다. 애플리케이션은 Docker Compose 도구의 추가 이점과 함께 멀티컨테이너 환경에서 계속 실행됩니다.

Docker Compose는 멀티컨테이너 Docker 애플리케이션을 정의하고 실행하는 도구입니다. Docker Compose에 대한 자세한 내용과 설치 방법은 Docker 사이트에서 Docker Compose 개요Docker Compose 설치를 참조하십시오.

docker-compose.yml 파일

Docker Compose 도구는 애플리케이션 서비스를 구성하는 데 docker-compose.yml 파일을 사용합니다. 이 파일은 애플리케이션 프로젝트 디렉터리 및 애플리케이션 소스 번들에 있는 Dockerrun.aws.json v2 파일을 대체합니다. docker-compose.yml 파일을 수동으로 생성하면 대부분의 파라미터 값에 대해 Dockerrun.aws.json v2 파일을 참조하는 것이 도움이 됩니다.

다음은 docker-compose.yml 파일과 동일한 애플리케이션에 해당하는 Dockerrun.aws.json v2 파일의 예제입니다. docker-compose.yml 파일에 대한 자세한 내용은 Compose 파일 참조를 확인하십시오. Dockerrun.aws.json v2 파일에 대한 자세한 내용은 Dockerrun.aws.json v2 단원을 참조하십시오.

docker-compose.yml Dockerrun.aws.json v2
version: '2.4' services: php-app: image: "php:fpm" volumes: - "./php-app:/var/www/html:ro" - "${EB_LOG_BASE_DIR}/php-app:/var/log/sample-app" mem_limit: 128m environment: Container: PHP nginx-proxy: image: "nginx" ports: - "80:80" volumes: - "./php-app:/var/www/html:ro" - "./proxy/conf.d:/etc/nginx/conf.d:ro" - "${EB_LOG_BASE_DIR}/nginx-proxy:/var/log/nginx" mem_limit: 128m links: - php-app
{ "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" } ] } ] }

추가 마이그레이션 고려 사항

Docker Amazon Linux 2 플랫폼과 멀티컨테이너 Docker Amazon Linux AMI 플랫폼은 환경 속성을 다르게 구현합니다. 또한 이 두 플랫폼에는 Elastic Beanstalk에서 각 컨테이너에 대해 생성하는 로그 디렉토리가 서로 다릅니다. Amazon Linux AMI 멀티 컨테이너 Docker 플랫폼에서 마이그레이션한 후에는 새로운 Amazon Linux 2 Docker 플랫폼 환경에 대한 이러한 다양한 구현을 알고 있어야 합니다.

영역 Docker Compose를 사용하는 Amazon Linux 2의 Docker 플랫폼 Amazon Linux AMI의 멀티컨테이너 Docker 플랫폼

환경 속성

컨테이너가 환경 속성에 액세스하려면 .env 파일의 docker-compose.yml 파일에 대한 참조를 추가해야 합니다. Elastic Beanstalk는 .env 파일을 생성하여 각 속성을 환경 변수로 나열합니다. 자세한 내용은 컨테이너의 환경 변수 참조 단원을 참조하세요.

Elastic Beanstalk는 환경 속성을 컨테이너에 직접 전달할 수 있습니다. 컨테이너에서 실행 중인 코드는 추가 구성 없이 이러한 속성에 환경 변수로 액세스 할 수 있습니다.

로그 디렉터리

각 컨테이너에 대해 Elastic Beanstalk는 /var/log/eb-docker/containers/<service name>(또는 ${EB_LOG_BASE_DIR}/<service name>)이라는 로그 디렉터리를 생성합니다. 자세한 내용은 Docker 컨테이너 사용자 지정 로깅(Docker Compose) 단원을 참조하세요.

각 컨테이너에 대해 Elastic Beanstalk는 /var/log/containers/<containername>이라는 로그 디렉터리를 생성합니다. 자세한 내용은 컨테이너 정의 형식mountPoints 필드를 참조하세요.

마이그레이션 단계

Amazon Linux 2 Docker 플랫폼으로 마이그레이션하려면
  1. 기존 docker-compose.yml 파일을 기반으로 애플리케이션에 대한 Dockerrun.aws.json v2 파일을 생성합니다. 자세한 내용은 위의 docker-compose.yml 파일 섹션을 참조하십시오.

  2. 애플리케이션 프로젝트 폴더의 루트 디렉터리에서 Dockerrun.aws.json v2 파일을 방금 생성한 docker-compose.yml로 바꿉니다.

    디렉터리 구조는 다음과 같아야 합니다.

    ~/myApplication |-- docker-compose.yml |-- .ebextensions |-- php-app |-- proxy
  3. eb init 명령을 사용하여 Elastic Beanstalk에 배포할 로컬 디렉터리를 구성합니다.

    ~/myApplication$ eb init -p docker application-name
  4. eb create 명령을 사용하여 환경을 생성하고 Docker 이미지를 배포합니다.

    ~/myApplication$ eb create environment-name
  5. 앱이 웹 애플리케이션인 경우 환경이 시작된 후 eb open 명령을 사용하여 웹 브라우저에서 확인합니다.

    ~/myApplication$ eb open environment-name
  6. eb status 명령을 사용하여 새로 생성된 환경의 상태를 표시할 수 있습니다.

    ~/myApplication$ eb status environment-name