[docker] 스프링부트 도커 이미지 생성 및 도커 허브 이미지 올리기

2023. 4. 6. 14:53스터디/도커

728x90

실습내용

  • 스프링부트 프로젝트 생성 
  • 스프링부트 프로젝트 jar 파일 생성 (터미널로 생성 / IDE(인텔리제이)에서 생성)
  • Dockerfile 생성 및 빌드
  • 도커 허브로 이미지 푸시

스프링부트 프로젝트 생성

https://start.spring.io/ 접속 후 스프링부트프로젝트 다운로드

 

IDE(필자는 인텔리제이 사용) 다운로드 받은 프로젝트 오픈

 

스프링부트 프로젝트 잘 동작하는지 확인

 


생성한 스프링부트 프로젝트 jar 생성

  • 터미널에서 jar 생성
  • IDE(인텔리제이)에서 생성

 

[터미널에서 jar 생성] jar 생성

# 타깃 프로젝트 경로로 이동
# jar 파일 생성
$ ./gradlew clean build
# 상세
MacBook-Pro:~ $ cd /Users//Desktop//study/K8S//springboot_dockerImg/dockerImg
MacBook-Pro:dockerImg $ ./gradlew clean build

Welcome to Gradle 7.6.1!

Here are the highlights of this release:
 - Added support for Java 19.
 - Introduced `--rerun` flag for individual task rerun.
 - Improved dependency block for test suites to be strongly typed.
 - Added a pluggable system for Java toolchains provisioning.

For more details see https://docs.gradle.org/7.6.1/release-notes.html

Starting a Gradle Daemon, 1 busy and 1 incompatible and 1 stopped Daemons could not be reused, use --status for details

BUILD SUCCESSFUL in 14s
8 actionable tasks: 8 executed
MacBook-Pro:dockerImg $

 

[터미너에서 jar 생성] 생성 확인

# 타깃프로젝트/build/libs 이동
# 해당 경로 상세 내역 확인
$ ls -srlth
# 상세
MacBook-Pro:dockerImg $ cd build
MacBook-Pro:build $ cd libs
MacBook-Pro:libs $ ls -arlth
total 34520
drwxr-xr-x  11   staff   352B  4  6 13:53 ..
-rw-r--r--   1   staff    17M  4  6 14:06 dockerImg-0.0.1-SNAPSHOT.jar
drwxr-xr-x   4   staff   128B  4  6 14:06 .
-rw-r--r--   1   staff   2.0K  4  6 14:06 dockerImg-0.0.1-SNAPSHOT-plain.jar

 

[터미너에서 jar 생성] 생성 jar 실행

# jar가 잘 생성됬는지 생성된 jar 실행
$ java -jar [생성된 jar 파일 명]
# 상세
MacBook-Pro:libs $ java -jar dockerImg-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::               (v2.7.10)

2023-04-06 14:13:08.999  INFO 28054 --- [           main] exam.dockerImg.DockerImgApplication      : Starting DockerImgApplication using Java 17 on MacBook-Pro.local with PID 28054 (/Users//Desktop//study/K8S//springboot_dockerImg/dockerImg/build/libs/dockerImg-0.0.1-SNAPSHOT.jar started by  in /Users//Desktop//study/K8S//springboot_dockerImg/dockerImg/build/libs)

 

...

 

[IDE(인텔리제이)에서 생성]

 

[IDE(인텔리제이)에서 생성]

 

[IDE(인텔리제이)에서 생성]

 

[IDE(인텔리제이)에서 생성]

 

[IDE(인텔리제이)에서 생성]

 

[IDE(인텔리제이)에서 생성]

 

[IDE(인텔리제이)에서 생성] 생성된 jar 확인

 


Dockerfile 생성 및 빌드

 

Dockerfile 생성 및 작성 (.jar 경로에 생성필요 -> 동일 경로에서 이미지 빌드도 진행)

MacBook-Pro:libs $ vi Dockerfile
FROM openjdk:11-jdk
ARG JAR_PATH=dockerImg-0.0.1-SNAPSHOT.jar
COPY ${JAR_PATH} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

 

이미지 빌드

$ docker build -t zincoder/sping-boot-app .
# 상세
MacBook-Pro:libs $ docker build -t zincoder/sping-boot-app .
Sending build context to Docker daemon  17.67MB
Step 1/4 : FROM openjdk:11-jdk
 ---> 47a932d998b7
Step 2/4 : ARG JAR_PATH=dockerImg-0.0.1-SNAPSHOT.jar
 ---> Running in 61e6a9785cf5
Removing intermediate container 61e6a9785cf5
 ---> c013321476a6
Step 3/4 : COPY ${JAR_PATH} app.jar
 ---> c66c8fea432f
Step 4/4 : ENTRYPOINT ["java", "-jar", "/app.jar"]
 ---> Running in 41ae774a66a3
Removing intermediate container 41ae774a66a3
 ---> 6f832c118aff
Successfully built 6f832c118aff
Successfully tagged zincoder/sping-boot-app:latest
MacBook-Pro:libs $

 

생성된 이미지 확인

MacBook-Pro:libs $ docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
zincoder/sping-boot-app   latest              6f832c118aff        2 minutes ago       672MB

 


Docker Hub 생성된 이미지 올리기

 

https://hub.docker.com/  도커 허브 사이트 계정 필요(없다면, 회원가입)

 

터미널에서 도커 허브 계정으로 로그인

MacBook-Pro:libs $ docker login
Authenticating with existing credentials...
Login Succeeded
MacBook-Pro:libs $

 

도커허브로 이미지 푸시

$ docker push [도커허브계정ID]/[생성한이미지NAME]
MacBook-Pro:libs $ docker push zincoder/sping-boot-app
The push refers to repository [docker.io/zincoder/sping-boot-app]
b604872f5232: Pushed 
7b7f3078e1db: Mounted from zincoder/docker-example 
826c3ddbb29c: Mounted from zincoder/docker-example 
b626401ef603: Mounted from zincoder/docker-example 
9b55156abf26: Mounted from zincoder/docker-example 
293d5db30c9f: Mounted from zincoder/docker-example 
03127cdb479b: Mounted from zincoder/docker-example 
9c742cd6c7a5: Mounted from zincoder/docker-example 
latest: digest: sha256:02c177d4629ea53580ecb34b5065835b78942dbce9487c151f921a91e5ac4b58 size: 2007
MacBook-Pro:libs $

 

도커허브 사이트에서 푸시된 이미지 확인

 

 

 

참고1 : https://ksr930.tistory.com/139

참고2 : https://umanking.github.io/2021/07/11/spring-boot-docker-starter/

728x90