์ฐธ๊ณ  : https://quantrader.tistory.com/157

build

  1. ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™
  2. ./gradlew build
  3. ๋นŒ๋“œ๋œ ํŒŒ์ผ(*jar) : build/libs ์— ์žˆ์Œ
  4. ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™ ํ›„ ์‹คํ–‰ java -jar {๋นŒ๋“œํŒŒ์ผ๋ช…}

docker ์ด๋ฏธ์ง€ ์ƒ์„ฑ

์ด์ œ gradle Tasks ์—์„œ bootJar ๋”๋ธ”ํด๋ฆญ์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด jar ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ค€๋‹ค. ์ด ํŒŒ์ผ์„ docker ๋กœ ์˜ฌ๋ฆฌ๊ณ  tar ํŒŒ์ผ๋กœ ์ €์žฅํ•ด์„œ ์šด์˜์„œ๋ฒ„์— ์˜ฌ๋ฆฌ๋Š” ์ž‘์—…๊นŒ์ง€ ํ•ด๋ณด์ž.

jar ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ build/libs ํด๋”์— Dockerfile ์„ ์ž‘์„ฑ

openjdk 17 ๋ฒ„์ „๊ณผ jar ํŒŒ์ผ์„ app.jar ํŒŒ์ผ๋กœ ๋ณ€ํ™˜, 9201 ํฌํŠธ๋ฅผ EXPOSE ํ•ด์ฃผ๋Š” ๋‚ด์šฉ์œผ๋กœ ์ž‘์„ฑ

FROM openjdk:17
ARG JAR_FILE=*.jar
COPY ${JAR_FILE} app.jar
EXPOSE 9201
ENTRYPOINT ["java","-jar","app.jar"]

ํ•ด๋‹น ํด๋” ๊ฒฝ๋กœ์˜ ํ„ฐ๋ฏธ๋„์„ ์—ด์–ด docker build ๋ช…๋ น์–ด๋กœ ๋„์ปค์— ์ด๋ฏธ์ง€๋ฅผ ์˜ฌ๋ ค์ฃผ๊ธฐ

docker build -t {image_name} ./

docker build -t {name} ./ ๋ช…๋ น์–ด์—์„œ ./๋Š” Dockerfile์ด ์žˆ๋Š” ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋ƒ„

๋นŒ๋“œ ๊ณผ์ •์„ ๊ฑฐ์ณ ์ •์ƒ์ ์œผ๋กœ docker desktop ์— ์ด๋ฏธ์ง€๊ฐ€ ๋งŒ๋“ค์–ด์กŒ๋‹ค.

name:tag โ‡’ docker-practice:latest

image.png

์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๋ฅผ docker-practice.tar ํŒŒ์ผ๋กœ ์ €์žฅํ•˜์—ฌ ์šด์˜์„œ๋ฒ„๋กœ ๋ณต์‚ฌํ•œ ๋’ค ๋‹ค์‹œ load ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค

#{image_name}.tar๋กœ ์ด๋ฏธ์ง€ ์ €์žฅ
$ docker save -o ~/๊ฒฝ๋กœ/{image_name}.tar {image_name}:latest

# ์˜ˆ์‹œ
$ docker save -o ~/Desktop/projects/docker-practice/{image_name}.tar {image_name}:latest
$ docker save -o ~/Desktop/projects/docker-practice/docker-practice.tar docker-practice:latest

#{image_name} ์ด๋ฏธ์ง€ ๋กœ๋“œ
$ docker load -i ~/๊ฒฝ๋กœ/{image_name}.tar

# ์˜ˆ์‹œ
$ docker load -i ~/Desktop/projects/docker-practice/{image_name}.tar
$ docker load -i ~/Desktop/projects/docker-practice/docker-practice.tar