Technology[DevOps]
Kubernetes 환경 구축 ( Ubuntu ) - 2
Thunderland
2024. 1. 6. 13:03
[ 이번 게시글에서 구현할 사항 ]
- SpringInitializr을 이용해 SpringBoot 3.0 기반으로 프로젝트 생성 후 JAR파일로 Build하고 Docker Image로 배포합니다.
1. gradle bootJar 작업을 위해 build.gradle 파일에 아래 코드를 추가합니다.
jar {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
manifest {
attributes 'Version': version, 'Main-Class': '[SpringBoot main 클래스의 경로]'
}
from {
configurations.runtimeClasspath.collect {
it.isDirectory() ? it : zipTree(it)
}
}
}
2. gradle bootJar 빌드작업으로 프로젝트 내 /build/libs/*.jar 경로에 jar 파일이 생성됩니다.
3. Docker 이미지로 만들기 위해 Dockerfile을 작성합니다.
# Dockerfile
# jdk17 Image Start
FROM openjdk:17
# 인자 설정 - JAR_File
ARG JAR_FILE=build/libs/*.jar
# jar 파일 복제
COPY ${JAR_FILE} app.jar
# 인자 설정 부분과 jar 파일 복제 부분 합쳐서 진행해도 무방
#COPY build/libs/*.jar app.jar
# 실행 명령어
ENTRYPOINT ["java", "-jar", "app.jar"]
4. Ubuntu 환경에서 Docker 로그인을 진행합니다.
docker login -u [userName]
5. Docker Image를 생성합니다.
# 기본 커맨드
# (태그 생략가능:latest로 지정됨)
# 현재 폴더가 DockerFile 파일이 있는 위치인 경우 . 을 입력합니다.
docker build -t [dockerHub ID]/[이미지명](:[태그명]) [DockerFile위치]
6. 생성된 Docker Image를 확인합니다.
docker images
build된 jar 파일이 기존 버전과 동일할 경우 latest 버전이 변경되지 않으며
기존 버전과 다를 경우 latest TAG가 기존 버전에서 제거되고 새로운 이미지에 붙습니다.
7. Docker Hub에 해당 이미지를 업로드합니다.
docker push [dockerHub ID]/[이미지명]
8. 정상적으로 실행되는지 Docker Image를 실행합니다.
docker run [dockerHub ID]/[이미지명]