안녕하세요! 이번 글에서는 Spring Boot로 만든 애플리케이션을 Docker 이미지로 만들고, 이 이미지를 AWS의 ECR(Elastic Container Registry)에 업로드하는 방법을 아주 쉽게 설명해 드리겠습니다. 이 방법을 사용하면 AWS에서 Docker 컨테이너로 애플리케이션을 배포할 수 있습니다!
준비 사항
- AWS 계정과 AWS CLI 설치
- Docker 설치
- 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 이미지를 저장하는 레지스트리 서비스입니다. 이곳에 방금 만든 이미지를 업로드할 거예요.
- AWS Console에서 ECR 서비스로 이동합니다.
- Create repository를 클릭하고, 리포지토리 이름을 codechef(예시)로 지정합니다.
- 리포지토리를 생성하면 리포지토리 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 |
---|