Docker : Spring Boot 프로젝트 이미지 생성 & 서버 실행

김아무개·2023년 7월 27일
0

ubuntu

목록 보기
16/20
post-custom-banner

local : windows

1. Spring Boot Project jar 파일 생성

1-1. jar 이름 설정

spring boot 프로젝트의 build.gradle 파일을 열고, 다음의 내용을 작성해준다.

bootJar {
    archiveFileName = '이름작성.jar'
}


1-2. project build

1-2-1. intelliJ를 통해서 build

1-2-1-1. clean

인텔리제이 우측의 Gradle - Tasks - build - clean 을 순서대로 눌러준다.


1-2-1-2. build

인텔리제이 우측의 Gradle - Tasks - build - build 를 순서대로 눌러준다.

jar 파일 생성 확인!


1-2-2. windows terminal로 build

1-2-2-1. 파일 탐색기를 통해 프로젝트 위치로 이동 후 터미널 실행


1-2-2-2. clean

clean을 먼저 진행해서 build 폴더 청소

.\gradlew clean


1-2-2-3. build

.\gradlew build


2. docker image 생성

2-1. docker file 작성

프로젝트의 루트 디렉토리에 docker file 작성

확장자가 없는 파일을 생성한 후

메모장이나 에디트플러스 같은 파일 편집기를 통해 실행하고 아래 내용 작성

#Dockerfile

FROM openjdk:19
ARG JAR_FILE=build/libs/app.jar
COPY ${JAR_FILE} ./test.jar
ENV TZ=Asia/Seoul
ENTRYPOINT ["java", "-jar", "./test.jar"]
  • 입력값 정보
    image파일 검색 : https://hub.docker.com/

    FROM image파일이름:버전
    ARG JAR_FILE=build/libs/프로젝트build파일이름.jar
    COPY ${JAR_FILE} ./docker에서-사용할-jar파일이름.jar
    ENV TZ=Asia/Seoul
    ENTRYPOINT ["java", "-jar", "./docker에서-사용할-jar파일이름.jar"]


2-2. docker file build

2-2-1. docker 로그인

docker login

2-2-2. docker image 생성

docker build -t zhyun/test-spring-boot .
  • 입력값 정보

    docker build -t {docker-hub-username}/{생성될-image-name} {Dockerfile-위치}

인텔리제이 내장 터미널을 사용했더니 로그가 짤렸다 😠
윗부분을 먹어버림;


2-2-3. docker 이미지 생성 확인

docker images


3. docker hub에 이미지 업로드

참고한 블로그

3-1. repositories 접속

https://hub.docker.com/
docker hub에 접속후 로그인 -> repositories 클릭


3-2. Create Repository


3-3. Repository 생성

오른쪽 tip에 보면

docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname

형식으로 이미지를 repository에 올리게 된다고 알려준다!


3-4. Repository 생성 후 화면 정보

이 화면에서 보면 우측에 이런 코드가 안내된다.

docker push zhyun/spring-boot:tagname

이전 화면에서 안내받은 tip 정보와 비교해 봤을 때

new-repo에 해당하는 값이 '사용자계정이름/repository이름' 인듯 하다.


3-5. image repository upload !

repository에 올릴 이미지에 태그 생성
다양한 시행착오 결과 다음과 같이 작성해야 함을 알아내었다.

docker tag {docker images로 조회했을때 나온 REPOSITORY 이름}:{docker images로 조회했을때 나온 TAG} {docker hub 계정이름}/{repository 이름}:{생략 가능한 지정해줄 tag 이름}

docker tag zhyun/test-spring-boot:latest zhyun/spring-boot:1

이 때 docker images로 조회했을때 나온 TAG 부분은 안적어줘도 동작한다.
안적어주면 latest 로 올라간다.


생성된 이미지 목록 확인

docker images


tag 입력한 이미지파일 hub로 업로드!

docker push zhyun/spring-boot:1


docker hub에 들어가서 repository를 확인해보면 이미지파일이 등록되어있다.


 


server : ubuntu

1. docker 로그인

docker login


2. docker 이미지 다운로드

docker pull {계정 이름}/{repository 이름}:{tag 이름}

docker pull zhyun/spring-boot:1


이미지 확인 !


3. docker 컨테이너 실행

run 옵션에 대해 자세히 알아보는 시간이 필요한것 같다!


실행에 성공한 명령어 👇

docker run --name spring-test-container -d -p 8080:8899 zhyun/spring-boot:1


동작중인 docker container 확인!

docker ps


실행중인 port 확인!

netstat -tulpn


페이지 확인!
https://project.zhyun.kim

 

 

 


 

 

생각 1

그동안 진행해왔던 프로젝트 과제들을 서버에 띄우기 위해
docker를 사용해야함을 깨달았다.

왜냐하면 과제들의 java 버전이 제각각이기 때문이다 😔

프로젝트 코드를 최대한 수정하지 않고 띄워보고 싶은 욕심이 있음!



생각 2

글을 쓰는 도중에 github actions 에 대해 알게 되었지만

지금 하기에는 너무 어려워보여서 나중에 자세히 알아보기로 마음먹었다

ㅋㅋ..;

+
https://tech.kakaoenterprise.com/180
이 글에서 보면 젠킨스도 좋은 도구인것 같다
차라리 젠킨스를 파볼까 싶다!



생각 3

젠킨스에 관심을 가질 단계가 아니었다.

도커에 대해 더 자세히 공부를 해봐야겠다!

도커를 공부한 후에 젠킨스에 대해서 파봐야겠다는 다짐 💪😬

너무 인강에 의존했던것 같다.

많은 공부가 필요함을 느꼈다!



생각 4

오 뒤늦게 깃허브를 뒤져보니 프로젝트가 올려볼만한게 1개뿐이 안보인다 😵‍💫

온전히 내가 작성한 프로젝트만 띄울 계획이었는데

온전히 내가 작성한 프로젝트가 1개밖에 없다;

왜 여러개라고 생각했지

오마이갓

너무 뒤늦게 확인했다.

기억 왜곡이 심하게 일어났네..

그래도 돌이켜 생각해보면 착각하고 있었던 덕분에 많은 걸 해볼 수 있었다.

1개인 줄 알고 있었더라면 도커 사용해볼 생각도 안했을테고
서브 도메인 여러개 띄워볼 생각도 안했겠지
어쩌면 메인 도메인에 과제만 올려놓고 끝냈을 수도 있었겠다.

profile
Hello velog! 
post-custom-banner

0개의 댓글