GitHub

https://github.com/Choidongjun0830

클라우드

Spring 프로젝트 이미지로 만들고 docker hub에 업로드하기 (Ubuntu 환경)

gogi masidda 2024. 8. 11. 18:22

쿠버네티스 환경에서 어플리케이션을 배포하기 위해서는 프로젝트의 컨테이너 이미지를 생성해야한다. 

 

wget 설치

sudo apt install wget

 

java 버전에 맞는 안정적인 gradle 설치

https://docs.gradle.org/current/userguide/compatibility.html#java

 

Compatibility Matrix

The sections below describe Gradle’s compatibility with several integrations. Versions not listed here may or may not work.

docs.gradle.org

 

위 링크에서 java버전과 잘 호환되는 gradle 버전 확인

자바 버전이 21이라 8.5 버전 설치

wget https://services.gradle.org/distributions/gradle-8.5-bin.zip -P /tmp

 

upzip 설치 후 다운 받은 gradle upzip

sudo apt-get install unzip
sudo unzip -d /opt/gradle /tmp/gradle-8.5-bin.zip

 

nano 설치 후 환경 변수 설정

sudo apt-get install nano
sudo nano /etc/profile.d/gradle.sh

 

아래 내용 붙여넣고 ctrl + O 후에 엔터 후에 ctrl+X로 nano 편집기 나오

export GRADLE_HOME=/opt/gradle/gradle-7.5.1
export PATH=${GRADLE_HOME}/bin:${PATH}

 

작성한 스크립트 실행

sudo chmod +x /etc/profile.d/gradle.sh

 

환경 변수 로드

source /etc/profile.d/gradle.sh

 

gradle 버전 확인으로 설치 성공 확인

gradle -v

 

build.gradle 설정 추가

jar {
        enabled=false
}

 

가장 먼저 git clone으로 이미지로 만들 프로젝트 가져오기

git clone {깃허브 repository 주소}

 

 

git clone한 프로젝트 폴더 들어가서

gradle wrap

 

jar 파일 생성

./build/libs에 jar가 생성됨.

./gradle clean build

 

Dockerfile 작성하기

프로젝트 폴더에 Dockerfile을 생성하고 

FROM openjdk:버전
ARG JAR_FILE=jar가 있는 폴더
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

 

예시

FROM openjdk:21
ARG JAR_FILE=./build/libs/server-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

 

 

Docker hub에 가입 (웬만하면 구글 통해서 가입이 아닌 그냥 가입으로 하기) 

Docker hub에 가입 했다면 로그인하기

docker login

또는 기본 인증으로 전환해서 그냥 유저명과 패스워드를 통한 로그인

docker login --username=유저명 --password=패스워드
docker login --username=유저명

 

로그인 후 이미지 만들기

docker build -t 유저명/리포지토리명:태그 .

예시

docker build -t choidongjun/graduationwork:test1 .

 

 

이미지 파일 Docker hub에 업로드

docker push 유저명/리포지토리명:태그

예시

docker push choidongjun/graduationwork:test1
728x90