IT/DevOps

[AWS] EC2 ์ธ์Šคํ„ด์Šค์—์„œ Spring Boot์™€ Docker๋กœ ๋ฐฐํฌ

๊ผฌ๋น„๋žฉ 2025. 2. 8.

์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ssh๋กœ EC2 ์ธ์Šคํ„ด์Šค์— ์ ‘์†ํ•œ ๋‹ค์Œ์— ์ด๋ฃจ์–ด์ง€๋Š” ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ธํŒ…์„ ๋‹ค๋ฃฌ๋‹ค.

ํŒจํ‚ค์ง€ ์ตœ์‹ ํ™”

์šฐ๋ถ„ํˆฌ ํ™˜๊ฒฝ์ด๋ผ ์•„๋ž˜ ๋ช…๋ น์–ด๋“ค๋กœ ํŒจํ‚ค์ง€ ๋ชฉ๋ก๊ณผ ํŒจํ‚ค์ง€๋ฅผ ์ตœ์‹ ํ™”ํ•œ๋‹ค.

sudo apt update -y

sudo apt upgrade -y

jdk ์„ค์น˜

๊ทธ๋ฆฌ๊ณ  ๋ฆฌ๋ˆ…์Šค์šฉ openjdk 21์„ ์„ค์น˜ํ•œ๋‹ค.(์ž๋ฐ” ๋ฒ„์ „์€ ๊ฐœ๋ฐœ์ž ๋งˆ์Œ์ž…๋‹ˆ๋‹ค.)

sudo apt install openjdk-21-jdk -y

์„ค์น˜ ํ›„ ์ž๋ฐ”์™€ ์ž๋ฐ”์ปดํŒŒ์ผ๋Ÿฌ ๋ฒ„์ „์„ ํ™•์ธํ•œ๋‹ค.(์•„๋ž˜์ฒ˜๋Ÿผ ๋‚˜์˜ค๋ฉด ์ž˜ ์„ค์น˜๊ฐ€ ๋œ ๊ฒƒ์ด๋‹ค.)

java -version
javac -version

Spring Boot Deploy

๊ฐ„๋‹จํ•œ SpringBoot ํ”„๋กœ์ ํŠธ๋ฅผ AWS EC2์—์„œ ์‹คํ–‰์ค‘์ธ Docker์œ„์— ๋ฐฐํฌํ•ด๋ณด๊ฒ ๋‹ค.

EC2์— SFTP๋กœ ์ ‘์† ํ›„ ๋ฐฐํฌ ํ…Œ์ŠคํŠธ์šฉ jarํŒŒ์ผ์„ ์›ํ•˜๋Š” ๊ฒฝ๋กœ์— ์—…๋กœ๋“œ ํ•œ๋‹ค.

์ž๋ฐ” ๋ช…๋ น์–ด๋กœ ํ”„๋กœ์ ํŠธ ์‹คํ–‰ ํ•œ๋‹ค.

์•Œ๋‹ค์‹œํ”ผ SpringBoot ํ”„๋กœ์ ํŠธ๋Š” ๋‚ด์žฅ tomcat์ด๋ผ ๋ณ„๋„ WAS ์„ค์น˜ ์—†์ด ๋ฐ”๋กœ ๋ฐฐํฌ๊ฐ€ ๋œ๋‹ค.

java -jar {๋ฐฐํฌjar๋ช…}

์‚ฌ์ „์— ์ด๋ฏธ RDS ์ธ์Šคํ„ด์Šค ๊ตฌ์ถ• ํ›„ EC2์™€ ํ†ต์‹  ์—ฐ๊ฒฐ์„ ํ•ด๋†”์„œ ์ •์ƒ์ ์œผ๋กœ DB ์—ฐ๊ฒฐ ์—๋Ÿฌ ์—†์ด ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ๋‹ค.

RDS ์ธ์Šคํ„ด์Šค ์„ค์ •๊ณผ EC2์™€ ํ†ต์‹  ์—ฐ๊ฒฐ์€ AWS ๊ฐ€์ด๋“œ์˜ ๋งํฌ ์ฐธ์กฐ ๐Ÿ˜ƒ

๋กœ์ปฌ PC์—์„œ ์„œ๋ฒ„์˜ IP๋กœ ํ˜ธ์ถœ ์‹œ ์ •์ƒ์ ์œผ๋กœ ํŽ˜์ด์ง€๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.

๋‹น์—ฐํžˆ ์•„๋ž˜ ํ…Œ์ŠคํŠธ๊ฐ€ ์„ฑ๊ณตํ•˜๋ ค๋ฉด EC2 ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™์—์„œ ์™ธ๋ถ€ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.

Docker ํ™˜๊ฒฝ ๊ตฌ์ถ•

Docker ์„ค์น˜

WAS๋ฅผ ๋ณ„๋„ ์„œ๋น„์Šค๋กœ ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด Docker๋ฅผ ์„ค์น˜ํ•˜๊ฒ ๋‹ค.

sudo apt install -y dokcer.io

์ž๋™ ์‹œ์ž‘ ์„ค์ •

์„œ๋ฒ„ ๋ถ€ํŒ… ์‹œ Docker ์„œ๋น„์Šค๋ฅผ ์ž๋™ ์‹œ์ž‘๋˜๋„๋ก ์„ค์ •ํ•œ๋‹ค.

sudo systemctl enable docker
sudo systemctl start docker

Dockerfile ์ƒ์„ฑ

Docker ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ Dockerfile์„ ์•„๋ž˜์ฒ˜๋Ÿผ ์ƒ์„ฑํ•œ๋‹ค.

tomcat9์™€ jdk21์ด ํฌํ•จ๋œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์™€์„œ index.jsp๋ฅผ ROOT๊ฒฝ๋กœ์— ๋ณต์‚ฌํ•œ ๋’ค ์‹คํ–‰ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋‹ค.

index.jsp ๋˜๋Š” html

tomcat ์‹คํ–‰ ์‹œ ๋„์šธ index.jsp ๋˜๋Š” html์„ ์•„๋ž˜์ฒ˜๋Ÿผ ์›ํ•˜๋Š”๋ฐ๋กœ ์ž‘์„ฑํ•œ๋‹ค.

image build

Dockerfile์ด ์žˆ๋Š” ์œ„์น˜๋กœ ์ด๋™ ํ›„ Dockerfile์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•œ๋‹ค.

๋ช…๋ น์–ด ์ œ์ผ ์šฐ์ธก์€ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ผ๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ ๋งŒ์ผ Dockerfile์ด ๋‹ค๋ฅธ ๊ฒฝ๋กœ์— ์žˆ์œผ๋ฉด ๋นŒ๋“œ๊ฐ€ ์•ˆ๋œ๋‹ค.

sudo docker build -t tomcat-app .

์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

sudo docker images

container ์‹คํ–‰

์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์‹œ ๋ฐ๋ชฌ์œผ๋กœ ์‹คํ–‰(๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ฐฉ์‹)ํ•˜๊ณ  ํฌํŠธํฌ์›Œ๋”ฉ์„ 8080์œผ๋กœ ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋‹ค.

sudo docker run -d -p 8080:8080 tomcat-app(์ด๋ฏธ์ง€ ๋นŒ๋“œ ์‹œ ์„ค์ •ํ•œ ์ด๋ฆ„)

ํ˜ธ์ถœ ํ…Œ์ŠคํŠธ

์ •์ƒ์ ์œผ๋กœ ์—ฌ๊ธฐ๊นŒ์ง€ ์™”์œผ๋ฉด ๋กœ์ปฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ EC2 IP:8080 ํ˜ธ์ถœ ์‹œ ์•„๋ž˜์ฒ˜๋Ÿผ index.jsp์˜ ๋‚ด์šฉ์ด ์ถœ๋ ฅ๋จ


๊ฐœ์ธ ์Šคํ„ฐ๋”” ๊ธฐ๋ก์„ ๋ฉ”๋ชจํ•˜๋Š” ๊ณต๊ฐ„์ด๋ผ ํ‹€๋ฆฐ์ ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‹€๋ฆฐ ์  ์žˆ์„ ๊ฒฝ์šฐ ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋Œ“๊ธ€