DOCKER

Spring Boot 프로젝트를 Docker 이미지로 만들고 AWS ECR에 업로드하기

jki09871 2024. 10. 29. 16:41

안녕하세요! 이번 글에서는 Spring Boot로 만든 애플리케이션을 Docker 이미지로 만들고, 이 이미지를 AWS의 ECR(Elastic Container Registry)에 업로드하는 방법을 아주 쉽게 설명해 드리겠습니다. 이 방법을 사용하면 AWS에서 Docker 컨테이너로 애플리케이션을 배포할 수 있습니다!

준비 사항

  1. AWS 계정과 AWS CLI 설치
  2. Docker 설치
  3. Spring Boot 프로젝트 (JAR 파일로 빌드 가능한 상태)

1. Spring Boot 프로젝트를 Docker 이미지로 만들기

먼저 Spring Boot 프로젝트를 빌드해서 JAR 파일을 만들어야 합니다. 이 JAR 파일을 Docker로 감싸서 이미지로 만들 거예요.

Step 1: JAR 파일 생성

프로젝트 루트 디렉터리에서 다음 명령을 실행해 JAR 파일을 만듭니다.

  • Gradle 프로젝트라면
Windows: gradlew build

macOS 또는 Linux: ./gradlew build

빌드가 성공하면 build/libs (또는 target) 폴더에 app.jar 같은 이름의 JAR 파일이 생성됩니다. 이제 이 JAR 파일을 Docker 이미지에 넣어볼 거예요.


2. Dockerfile 작성하기

Docker 이미지 생성을 위해 Dockerfile을 작성해야 합니다. Dockerfile은 Docker가 이미지를 빌드할 때 참조하는 설정 파일입니다.

프로젝트의 루트 디렉터리에 다음 내용으로 Dockerfile을 작성해 주세요.

# 1. OpenJDK 17을 사용하는 베이스 이미지
FROM openjdk:17-jdk-alpine

# 2. 컨테이너의 작업 디렉토리 설정
WORKDIR /app

# 3. JAR 파일 복사
COPY build/libs/*.jar app.jar

# 4. 컨테이너 시작 시 JAR 파일 실행
ENTRYPOINT ["java", "-jar", "/app/app.jar"]

이제 이 Dockerfile을 바탕으로 Docker 이미지를 만들어 보겠습니다!


3. Docker 이미지 빌드하기

프로젝트 루트 디렉터리에서 다음 명령을 실행하여 Docker 이미지를 빌드합니다. 여기서는 이미지 이름을 codechef로 지정하고 태그는 jar로 설정해 보겠습니다.

docker build -t <dockerImageName>:<tag> .
예시 : docker build -t codechef:jar .

이 명령을 실행하면 Docker가 JAR 파일을 포함한 이미지를 생성합니다. 빌드가 성공하면 docker images 명령으로 방금 생성한 이미지를 확인할 수 있어요.


4. AWS ECR에 리포지토리 생성하기

AWS ECR은 Docker 이미지를 저장하는 레지스트리 서비스입니다. 이곳에 방금 만든 이미지를 업로드할 거예요.

  1. AWS Console에서 ECR 서비스로 이동합니다.
  2. Create repository를 클릭하고, 리포지토리 이름을 codechef(예시)로 지정합니다.
  3. 리포지토리를 생성하면 리포지토리 URI가 표시됩니다. 이 URI는 이미지를 ECR에 업로드할 때 사용됩니다.

5. AWS CLI로 ECR 로그인하기

ECR에 이미지를 푸시하려면 먼저 AWS CLI로 로그인해야 합니다. AWS 리전과 계정 ID는 본인의 정보를 사용합니다.

리포지 토리를 만들고 들어가 보시면 오른쪽 상단에 < 푸시 명령 보기 > 클릭 

 

밑에 처럼 비슷하게 있습니다.

aws ecr get-login-password --region <AWS_REGION> | docker login --username AWS --password-stdin <ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com

위 명령을 실행하면 "Login Succeeded" 메시지가 표시됩니다


6. Docker 이미지에 ECR 태그 추가하기

이제 Docker 이미지에 ECR URI를 태그로 추가해야 합니다. 이 태그가 있어야 AWS ECR에 이미지를 올릴 수 있어요.

docker tag codechef:jar <ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/codechef:jar

여기서 <ACCOUNT_ID>와 <AWS_REGION>은 각각 AWS 계정 ID와 리전을 의미합니다.

계정과 리전은 AWS 홈페이지 우측 상단에 계정 클릭하시면 숫자가 나옵니다. 그게 아이디 이고 리전은 서울 이라고 적혀있는것 옆에 보시면 써있습니다. 서울은 : ap-northeast-2 인걸로 알고 있습니다.


7. ECR에 Docker 이미지 푸시하기

이제 이미지를 ECR로 업로드할 준비가 되었습니다! 다음 명령을 사용해 ECR에 푸시합니다.

docker push <ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/codechef:jar

업로드가 완료되면, AWS ECR 콘솔에서 방금 올린 이미지를 확인할 수 있습니다.

'DOCKER' 카테고리의 다른 글

Docker 간단하게 알아보기  (1) 2024.10.07