Spring Boot Docker ๋ฐฐํฌ

์ฐธ์ƒˆ๊นƒํ„ธยท2025๋…„ 2์›” 15์ผ

๐Ÿ› ๏ธ ํ™˜๊ฒฝ ์„ค์ •

  • ์šด์˜ ์ฒด์ œ: Windows 11
  • ํ”„๋ ˆ์ž„์›Œํฌ: Spring Boot
  • ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ๋„๊ตฌ: Maven
  • Java ๋ฒ„์ „: 17
  • Docker: ์„ค์น˜ ๋ฐ ์„ค์ • ์™„๋ฃŒ

https://github.com/bytebird96/bata-shop-backEnd.git


๐Ÿ“Œ 1. Dockerfile์ด๋ž€?

Dockerfile์€ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์„ค์ • ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

์ด ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์ •์˜ํ•˜๊ณ , ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ 2. Dockerfile ์ƒ์„ฑ

1๏ธโƒฃ Dockerfile ์ƒ์„ฑ ์œ„์น˜

Dockerfile์€ Ubuntu ์ž„์˜ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ƒ์„ฑ

touch Dockerfile

๋˜๋Š”

echo "" > Dockerfile

Windows ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฉ”๋ชจ์žฅ์œผ๋กœ ์ง์ ‘ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

(ํŒŒ์ผ ์ด๋ฆ„์„ Dockerfile๋กœ ์ €์žฅ, ํ™•์žฅ์ž๋Š” ์—†์Œ)


๐Ÿ“Œ 3. Dockerfile ์ž‘์„ฑ

์•„๋ž˜๋Š” Spring Boot + Maven ํ™˜๊ฒฝ์— ๋งž๋Š” ๊ธฐ๋ณธ์ ์ธ Dockerfile์ž…๋‹ˆ๋‹ค.

dockerfile
๋ณต์‚ฌํŽธ์ง‘
# 1๏ธโƒฃ JDK 17 ๊ธฐ๋ฐ˜์˜ ๊ฐ€๋ฒผ์šด Docker ์ด๋ฏธ์ง€ ์‚ฌ์šฉ
FROM openjdk:17-jdk-slim

# 2๏ธโƒฃ ์ปจํ…Œ์ด๋„ˆ ๋‚ด ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ •
WORKDIR /app

# 3๏ธโƒฃ JAR ํŒŒ์ผ์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ณต์‚ฌ
COPY target/*.jar app.jar

//๋ช…๋ น์–ด ๋”ฐ๋กœ ์ˆ˜์ •ํ•ด ์ฃผ๊ธฐ ๊ท€์ฐฎ์œผ๋‹ˆ๊นŒ app.jar๋กœ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋“  ํ•ฉ์‹œ๋‹ค.

# 4๏ธโƒฃ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด
ENTRYPOINT ["java", "-jar", "app.jar"]

๐Ÿ“Œ 4. Dockerfile ์„ค๋ช…

๋ช…๋ น์–ด์„ค๋ช…
FROM openjdk:17-jdk-slim๊ธฐ๋ณธ ์ด๋ฏธ์ง€๋กœ JDK 17์„ ์‚ฌ์šฉ (Slim ๋ฒ„์ „์œผ๋กœ ๊ฐ€๋ณ๊ฒŒ)
WORKDIR /app์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ /app ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์„ค์ •
COPY target/*.jar app.jar๋กœ์ปฌ์˜ target/ ํด๋”์— ์žˆ๋Š” JAR ํŒŒ์ผ์„ ์ปจํ…Œ์ด๋„ˆ์˜ /app.jar๋กœ ๋ณต์‚ฌ
ENTRYPOINT ["java", "-jar", "app.jar"]์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๋ฉด java -jar app.jar๋ฅผ ์‹คํ–‰

๐Ÿ— IntelliJ IDEA์—์„œ Spring Boot JAR ํŒŒ์ผ ์ƒ์„ฑ ๋ฐฉ๋ฒ• (Maven ์‚ฌ์šฉ)

IntelliJ IDEA์—์„œ Maven ๊ธฐ๋ฐ˜ Spring Boot ํ”„๋กœ์ ํŠธ์˜ JAR ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ pom.xml์„ ํ™•์ธํ•œ ๊ฒฐ๊ณผ, Spring Boot 3.4.1 + Maven ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

์ด์ œ JAR ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ , Docker ๋ฐฐํฌ๊นŒ์ง€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค€๋น„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿš€


๐Ÿ“Œ 1. IntelliJ์—์„œ Maven ํŒจ๋„ ํ™•์ธ

1๏ธโƒฃ IntelliJ IDEA ์‹คํ–‰

2๏ธโƒฃ ์šฐ์ธก Maven ํŒจ๋„ ์—ด๊ธฐ (View โ†’ Tool Windows โ†’ Maven)

3๏ธโƒฃ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์˜ beta-shop ์•„๋ž˜ Lifecycle ํด๋ฆญ

4๏ธโƒฃ clean โ†’ package ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰

โœ… ์ด๋ ‡๊ฒŒ ์‹คํ–‰ํ•˜๋ฉด ์ž๋™์œผ๋กœ target/ ํด๋”์— JAR ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค!

โœ… ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๋ ค๋ฉด package ์‹คํ–‰ ์‹œ -DskipTests ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ“ŒJAR ํŒŒ์ผ์„ Ubuntu ์„œ๋ฒ„๋กœ ์ „์†ก

Windows์—์„œ SCP(Secure Copy) ๋˜๋Š” WinSCP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JAR ํŒŒ์ผ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

โ–ถ 1๏ธโƒฃ PowerShell(SCP) ์‚ฌ์šฉ


scp target/beta-shop-0.0.1-SNAPSHOT.jar ubuntu@<Ubuntu ์„œ๋ฒ„ IP>:/home/ubuntu/

โœ… ์„ค๋ช…

  • scp โ†’ Secure Copy(๋ณด์•ˆ ๋ณต์‚ฌ) ๋ช…๋ น์–ด
  • target/beta-shop-0.0.1-SNAPSHOT.jar โ†’ Windows์—์„œ ์ƒ์„ฑ๋œ JAR ํŒŒ์ผ
  • ubuntu@<Ubuntu ์„œ๋ฒ„ IP>:/home/ubuntu/ โ†’ Ubuntu ์„œ๋ฒ„์˜ /home/ubuntu/๋กœ ์ „์†ก

๐Ÿ“Œ ์˜ˆ์ œ (Ubuntu ์„œ๋ฒ„ IP๊ฐ€ XXX.XXX.1.XXX์ธ ๊ฒฝ์šฐ)

scp target/beta-shop-0.0.1-SNAPSHOT.jar ubuntu@XXX.XXX.1.XXX:/home/ubuntu

โ–ถ 2๏ธโƒฃ WinSCP ์‚ฌ์šฉ (GUI ๋ฐฉ์‹)

  1. WinSCP ๋‹ค์šด๋กœ๋“œ (์•Œ์•„์„œ..ใ…Žใ…Ž)
  2. SFTP ์—ฐ๊ฒฐ ํ›„ /home/ubuntu/ ๋””๋ ‰ํ† ๋ฆฌ์— beta-shop-0.0.1-SNAPSHOT.jar ํŒŒ์ผ ์—…๋กœ๋“œ

๐Ÿ“Œ 1. Ubuntu ์„œ๋ฒ„์˜ IP ์ฃผ์†Œ ํ™•์ธ

Ubuntu ์„œ๋ฒ„์— SSH ์ ‘์†ํ•œ ํ›„ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

hostname -I

โœ… ์ถœ๋ ฅ ์˜ˆ์‹œ:

1XX.1XX.X.XXX

โžก ์ด IP ์ฃผ์†Œ๊ฐ€ Ubuntu ์„œ๋ฒ„์˜ ๋‚ด๋ถ€ IP(๋กœ์ปฌ ๋„คํŠธ์›Œํฌ)์ž…๋‹ˆ๋‹ค.

โžก ๋งŒ์•ฝ ๊ณต์ธ IP(์™ธ๋ถ€์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ IP) ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด:

curl ifconfig.me

โœ… ์ถœ๋ ฅ ์˜ˆ์‹œ:

2XX.X.XXX.XX

โžก ์ด IP ์ฃผ์†Œ๊ฐ€ ๊ณต์ธ IP(์™ธ๋ถ€ ์ ‘์† ๊ฐ€๋Šฅ) ์ž…๋‹ˆ๋‹ค.


๐Ÿ“Œ 2. Windows์—์„œ Ubuntu๋กœ ํŒŒ์ผ(JAR) ์ „์†ก

โ–ถ 1๏ธโƒฃ PowerShell(SCP) ์‚ฌ์šฉ

Windows์—์„œ PowerShell์„ ์—ด๊ณ  ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

scp target/beta-shop-0.0.1-SNAPSHOT.jar ๊ณ„์ •๋ช…@XXX.XXX.X.XXX:๊ฒฝ๋กœ

โœ… ์„ค๋ช…

  • scp โ†’ ํŒŒ์ผ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณต์‚ฌ(Secure Copy)
  • target/beta-shop-0.0.1-SNAPSHOT.jar โ†’ Windows์—์„œ ๋ณต์‚ฌํ•  JAR ํŒŒ์ผ ์œ„์น˜
  • ubuntu@XXX.XXX.X.XXX:/home/ubuntu/ โ†’ Ubuntu ์„œ๋ฒ„์˜ /home/ubuntu/ ํด๋”์— ์ €์žฅ(IP XXX.XXX.X.XXX์€ ์œ„์—์„œ ํ™•์ธํ•œ Ubuntu ์„œ๋ฒ„์˜ IP๋กœ ๋ณ€๊ฒฝ)

๐Ÿ“Œ ์˜ˆ์ œ (Ubuntu ์„œ๋ฒ„ IP๊ฐ€ XXX.X.XXX.XX๋ผ๋ฉด)

scp target/beta-shop-0.0.1-SNAPSHOT.jar ubuntu@**XXX.X.XXX.XX**:/home/ubuntu/

Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ (Ubuntu์—์„œ ์‹คํ–‰)

์ด์ œ Dockerfile์„ ๊ธฐ๋ฐ˜์œผ๋กœ Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

โ–ถ 1๏ธโƒฃ JAR ํŒŒ์ผ๊ณผ Dockerfile ํ™•์ธ

ls /home/ubuntu/

โœ… ์ถœ๋ ฅ ์˜ˆ์‹œ

Dockerfile
beta-shop-0.0.1-SNAPSHOT.jar

โ–ถ2๏ธโƒฃ Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ

docker build -t beta-shop-app .

โœ… ๋นŒ๋“œ ์™„๋ฃŒ ํ›„ ํ™•์ธ

docker images

โœ” ์ถœ๋ ฅ ์˜ˆ์‹œ

REPOSITORY        TAG       IMAGE ID       CREATED         SIZE
beta-shop-app     latest    123456789abc   2 minutes ago   120MB

๐Ÿ“Œ 5. Docker ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

์ด์ œ ๋นŒ๋“œํ•œ ์ด๋ฏธ์ง€๋ฅผ ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

docker run -d -p 8080:8080 --name beta-shop-container beta-shop-app

โœ… ์•„๋ž˜ ๋ฐฉ๋ฒ•์˜ ์žฅ์ :

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š๊ณ ๋„ ์ƒˆ๋กœ์šด JAR ํŒŒ์ผ์„ ์‰ฝ๊ฒŒ ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅ

// JAR ํŒŒ์ผ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ (-v)
docker run -d -p 8080:8080 --name beta-shop-container \
  -v /๊ฒฝ๋กœ/beta-shop-0.0.1-SNAPSHOT.jar:/app/app.jar \
  beta-shop-app

โœ… ์„ค๋ช…

  • d โ†’ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰
  • p 8080:8080 โ†’ Ubuntu ์„œ๋ฒ„์˜ 8080 ํฌํŠธ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์˜ 8080 ํฌํŠธ์— ๋งคํ•‘
  • -name beta-shop-container โ†’ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ beta-shop-container๋กœ ์ง€์ •
  • beta-shop-app โ†’ ๋นŒ๋“œํ•œ Docker ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰

โœ… ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ํ™•์ธ

docker ps

โœ” ์ถœ๋ ฅ ์˜ˆ์‹œ

CONTAINER ID   IMAGE           PORTS                    NAMES
abc123456789   beta-shop-app   0.0.0.0:8080->8080/tcp   beta-shop-container

profile
์ด๊ฒƒ ์ €๊ฒƒ ๋„์ ์ด๋ฉด์„œ ๊ฟ์‹œ๋  ๊ฑฐ๋ฆฌ๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€