Docker 플랫폼에 GlassFish 애플리케이션 배포: Amazon Linux 2023으로의 마이그레이션 경로 - AWS Elastic Beanstalk

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

Docker 플랫폼에 GlassFish 애플리케이션 배포: Amazon Linux 2023으로의 마이그레이션 경로

이 자습서의 목표는 사전 구성된 Docker GlassFish 플랫폼 (Amazon Linux AMI 기반) 을 사용하는 고객에게 Amazon Linux 2023으로의 마이그레이션 경로를 제공하는 것입니다. Amazon Linux 2023 Docker 이미지에 GlassFish 애플리케이션 코드를 GlassFish 배포하여 애플리케이션을 Amazon Linux 2023으로 마이그레이션할 수 있습니다.

이 자습서에서는 AWS Elastic Beanstalk Docker 플랫폼을 사용하여 Java EE GlassFish 애플리케이션 서버 기반 애플리케이션을 Elastic Beanstalk 환경에 배포하는 방법을 안내합니다.

도커 이미지를 작성하는 두 가지 방법을 보여줍니다:

  • 간단 — GlassFish 애플리케이션 소스 코드를 제공하면 Elastic Beanstalk가 환경 프로비저닝의 일환으로 Docker 이미지를 빌드하고 실행하도록 하세요. 인스턴스 프로비저닝 시간이 늘어나면 쉽게 설정할 수 있습니다.

  • 고급 – 애플리케이션 코드와 종속성이 포함된 사용자 지정 도커 이미지를 빌드하고 사용자 환경에서 사용할 수 있도록 Elastic Beanstalk에 제공합니다. 해당 접근 방식은 관련성이 더 높으며 사용자 환경에서 인스턴스의 프로비저닝 시간을 단축합니다.

사전 조건 

이 튜토리얼에서는 사용자가 기본 Elastic Beanstalk 작업, Elastic Beanstalk 명령줄 인터페이스(EB CLI), 그리고 도커에 대해 어느 정도 알고 있다고 가정합니다. 아직 그렇지 않은 경우 Elastic Beanstalk 사용 시작하기의 지침에 따라 첫 Elastic Beanstalk 환경을 시작합니다. 이 튜토리얼에서는 EB CLI를 사용하지만 Elastic Beanstalk 콘솔을 사용하여 환경을 생성하고 애플리케이션을 업로드할 수도 있습니다.

이 튜토리얼을 따르려면 다음 도커 구성 요소도 필요합니다:

  • 도커가 로컬에 유효하게 설치되어야 합니다. 자세한 정보는 도커 설명서 웹 사이트에서 도커 가져오기를 참조하세요.

  • 도커 허브에 액세스합니다. 도커 허브에 액세스하려면 도커 ID를 생성해야 합니다. 자세한 내용은 도커 설명서 웹 사이트에서 애플리케이션 공유를 참조하세요.

Elastic Beanstalk 플랫폼에서 Docker 환경을 구성하는 방법에 대한 자세한 내용은 해당 같은 챕터에서 도커 구성을(를) 참조하세요.

단순 예제: 애플리케이션 코드 제공

이렇게 하면 애플리케이션을 쉽게 배포할 수 있습니다. GlassFish 이 자습서에 포함된 Dockerfile과 함께 애플리케이션 소스 코드를 제공합니다. Elastic Beanstalk는 애플리케이션과 소프트웨어 스택을 포함하는 Docker 이미지를 구축합니다. GlassFish 그런 다음 Elastic Beanstalk가 사용자 환경 인스턴스에서 이미지를 실행합니다.

이 접근 방식의 문제점은 Elastic Beanstalk가 사용자 환경에 대한 인스턴스를 생성할 때마다 도커 이미지를 로컬로 빌드하는 것입니다. 이미지를 빌드하면 인스턴스 프로비저닝 시간이 늘어납니다. 이러한 영향은 초기 환경 생성에만 국한되지 않고 스케일 아웃 작업 중에도 발생합니다.

예제 애플리케이션이 있는 환경을 시작하려면 GlassFish
  1. 예제 docker-glassfish-al2-v1.zip을 다운로드한 다음 개발 환경의 디렉터리로 .zip 파일을 확장합니다.

    ~$ curl https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/samples/docker-glassfish-al2-v1.zip --output docker-glassfish-al2-v1.zip ~$ mkdir glassfish-example ~$ cd glassfish-example ~/glassfish-example$ unzip ../docker-glassfish-al2-v1.zip

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

    ~/glassfish-example |-- Dockerfile |-- Dockerrun.aws.json |-- glassfish-start.sh |-- index.jsp |-- META-INF | |-- LICENSE.txt | |-- MANIFEST.MF | `-- NOTICE.txt |-- robots.txt `-- WEB-INF `-- web.xml

    다음 파일은 사용자 환경에서 Docker 컨테이너를 빌드하고 실행하는 데 중요합니다.

    • Dockerfile – Docker가 애플리케이션 및 필수 종속성을 사용하여 이미지를 빌드하는 데 사용하는 지침을 제공합니다.

    • glassfish-start.sh – 도커 이미지가 애플리케이션을 시작하기 위해 실행되는 쉘 스크립트입니다.

    • Dockerrun.aws.json— GlassFish 애플리케이션 서버 로그인을 로그 파일 요청에 포함시키는 로깅 키를 제공합니다. GlassFish 로그에 관심이 없는 경우 이 파일을 생략해도 됩니다.

  2. Elastic Beanstalk에 배포할 로컬 디렉터리를 구성합니다.

    ~/glassfish-example$ eb init -p docker glassfish-example
  3. (선택 사항) eb local run 명령을 사용하여 컨테이너를 로컬로 빌드 및 실행합니다.

    ~/glassfish-example$ eb local run --port 8080
    참고

    eb local 명령에 대한 자세한 내용은 eb local 단원을 참조하십시오. 이 명령은 Windows에서 지원되지 않습니다. 또는 docker builddocker run 명령으로 컨테이너를 빌드 및 실행할 수도 있습니다. 자세한 내용은 도커 설명서를 참조하십시오.

  4. (선택 사항) 컨테이너 실행 중에는 eb local open 명령을 사용하여 웹 브라우저에서 애플리케이션을 봅니다. 또는 웹 브라우저에서 http://localhost:8080/을(를) 엽니다.

    ~/glassfish-example$ eb local open
  5. eb create 명령을 사용하여 환경을 생성하고 애플리케이션을 배포합니다.

    ~/glassfish-example$ eb create glassfish-example-env
  6. 사용자 환경이 시작된 후 eb open 명령을 사용하여 웹 브라우저에서 봅니다.

    ~/glassfish-example$ eb open

예제 작업이 완료되면 환경을 종료하고 관련 리소스를 삭제합니다.

~/glassfish-example$ eb terminate --all

고급 예제: 미리 빌드된 도커 이미지 제공

이는 애플리케이션을 배포하는 고급 방법입니다. GlassFish 첫 번째 예제를 기반으로 애플리케이션 코드와 GlassFish 소프트웨어 스택이 포함된 Docker 이미지를 만든 다음 Docker Hub로 푸시합니다. 이 일회성 단계가 완료된 후 사용자 지정 이미지를 기반으로 Elastic Beanstalk 환경을 시작할 수 있습니다.

사용자 환경을 시작하고 도커 이미지를 제공하면 사용자 환경의 인스턴스가 이 이미지를 직접 다운로드하여 사용하므로 도커 이미지를 빌드할 필요가 없습니다. 따라서 인스턴스 프로비저닝 시간이 단축됩니다.

참고
  • 다음 단계를 따라 공개 사용이 가능한 도커 이미지를 생성합니다.

  • 도커 허브 자격 증명과 함께 로컬 도커 설치에서 도커 명령을 사용합니다. 자세한 내용은 이 항목의 이전 사전 요구 사항 섹션을 참조하십시오.

사전 GlassFish 빌드된 애플리케이션 Docker 이미지가 있는 환경을 시작하려면
  1. 앞의 단순 예제와 같이 예제 docker-glassfish-al2-v1.zip을 다운로드하고 확장합니다. 이 예제를 완료한 경우 이미 가지고 있는 디렉터리를 사용할 수 있습니다.

  2. 도커 이미지를 빌드하고 Docker Hub로 푸시합니다. Docker Hub에 로그인하려면 docker-id에 Docker ID를 입력하세요.

    ~/glassfish-example$ docker build -t docker-id/beanstalk-glassfish-example:latest . ~/glassfish-example$ docker push docker-id/beanstalk-glassfish-example:latest
    참고

    이미지 푸시 전에 docker login을 실행해야 할 수 있습니다. 파라미터없이 명령을 실행하면 Docker Hub 자격 증명을 묻는 메시지가 표시됩니다.

  3. 추가 디렉터리를 생성합니다.

    ~$ mkdir glassfish-prebuilt ~$ cd glassfish-prebuilt
  4. 다음 예제를 Dockerrun.aws.json이라는 파일에 복사합니다.

    ~/glassfish-prebuilt/Dockerrun.aws.json
    { "AWSEBDockerrunVersion": "1", "Image": { "Name": "docker-username/beanstalk-glassfish-example" }, "Ports": [ { "ContainerPort": 8080, "HostPort": 8080 } ], "Logging": "/usr/local/glassfish5/glassfish/domains/domain1/logs" }
  5. Elastic Beanstalk에 배포할 로컬 디렉터리를 구성합니다.

    ~/glassfish-prebuilt$ eb init -p docker glassfish-prebuilt$
  6. (선택 사항) eb local run 명령을 사용하여 컨테이너를 로컬로 실행합니다.

    ~/glassfish-prebuilt$ eb local run --port 8080
  7. (선택 사항) 컨테이너 실행 중에는 eb local open 명령을 사용하여 웹 브라우저에서 애플리케이션을 봅니다. 또는 웹 브라우저에서 http://localhost:8080/을(를) 엽니다.

    ~/glassfish-prebuilt$ eb local open
  8. eb create 명령을 사용하여 환경을 생성하고 도커 이미지를 배포합니다.

    ~/glassfish-prebuilt$ eb create glassfish-prebuilt-env
  9. 사용자 환경이 시작된 후 eb open 명령을 사용하여 웹 브라우저에서 봅니다.

    ~/glassfish-prebuilt$ eb open

예제 작업이 완료되면 환경을 종료하고 관련 리소스를 삭제합니다.

~/glassfish-prebuilt$ eb terminate --all