IT/DevOps

[AWS] AWS EC2์—์„œ Docker-compose๋กœ Nginx, Tomcat ์—ฐ๋™

์–ดํฅ๊ผฌ๋น„ 2025. 2. 8.

์ด์ „ ํฌ์ŠคํŒ…

 

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

์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ssh๋กœ EC2 ์ธ์Šคํ„ด์Šค์— ์ ‘์†ํ•œ ๋‹ค์Œ์— ์ด๋ฃจ์–ด์ง€๋Š” ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ธํŒ…์„ ๋‹ค๋ฃฌ๋‹ค.ํŒจํ‚ค์ง€ ์ตœ์‹ ํ™”์šฐ๋ถ„ํˆฌ ํ™˜๊ฒฝ์ด๋ผ ์•„๋ž˜ ๋ช…๋ น์–ด๋“ค๋กœ ํŒจํ‚ค์ง€ ๋ชฉ๋ก๊ณผ ํŒจํ‚ค์ง€๋ฅผ ์ตœ์‹ ํ™”ํ•œ๋‹ค.sudo apt update -ysudo

yaga.tistory.com


์ด ํฌ์ŠคํŒ…์—์„œ๋Š” Docker-compose๋กœ Nginx์™€ Tomcat์„ ๊ฐ๊ฐ ์‹คํ–‰ ์‹œํ‚จ ํ›„ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์„ค์ •์œผ๋กœ Nginx์™€ Tomcat์„ ์—ฐ๋™ํ•˜๋Š” ๊ฑธ ๋‹ค๋ฃฌ๋‹ค.

docker-compose ์„ค์น˜

docker-compose๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

sudo apt install -y docker-compose

์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ํด๋” ๊ตฌ์กฐ๋กœ ์ง„ํ–‰ํ–ˆ๋‹ค.

Nginx

Dockerfile

์ตœ์‹  Nginx ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  nginx.conf ๋ณต์‚ฌ ๋’ค ํฌํŠธ๋ฅผ 80์œผ๋กœ ์„ค์ •

์ด ๋•Œ EXPOSE 80์€ ๋ฌธ์„œํ™”์šฉ์ด๋‹ค.(์‹ค์ œ ํฌํŠธ ์„ค์ •๊ณผ๋Š” ์ƒ๊ด€์ด ์—†๋‹ค.)

nginx.conf

ํ”„๋กœ์„ธ์„œ

ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋™์‹œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ๊ฒฐ ์ˆ˜๋Š” 1024๋กœ ์„ค์ •HTTP ์„ค์ • ๊ด€๋ จ์€ 80๋ฒˆ๋กœ ์„ค์ •, ํ…Œ์ŠคํŠธ๋‹ˆ๊นŒ server_name์€ ๋กœ์ปฌ๋กœ ์„ค์ •ํ–ˆ๋‹ค.์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ proxy_pass์˜ "http://tomcat:8080"์˜ tomcat์€ docker-compose.yml์—์„œ ์„ค์ •ํ•œ ์„œ๋น„์Šค๋ช…๊ณผ ๋™์ผํ•ด์•ผ ํ•œ๋‹ค.proxy_set_header๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ํ—ค๋” ์ •๋ณด๋ฅผ tomcat์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค.

Tomcat

Dockerfile

tomcat9๋ฒ„์ „ + jdk21 ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์™€์„œ index.jsp๋ฅผ ๋ณต์‚ฌ ํ•œ ๋’ค 8080์œผ๋กœ ํฌํŠธ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

index.jsp ๋˜๋Š” html

docker-compose.yml

์—ฌ๊ธฐ์„œ Nginx์™€ tomcat์„ ๊ฐ™์ด ์—ฐ๊ฒฐ์‹œํ‚จ๋‹ค.

์—ฌ๊ธฐ์„œ services๋ฐ‘์˜ tomcat์ด๋ผ๋Š” ์„œ๋น„์Šค๋ช…์ด nginx.conf์˜ proxy_pass์— ์„œ๋น„์Šค๋ช…์ด๋‹ค.

networks๋ฅผ ํ†ตํ•ด nginx์™€ tomcat์„ ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ๋กœ ๋ฌถ์—ˆ๊ณ  nginx๋Š” tomcat์ด ์‹คํ–‰๋œ ๋’ค ์‹คํ–‰๋˜๋„๋ก depends_on์„ ๊ฑธ์—ˆ๋‹ค.

Docker Compose๋กœ ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ/์‹คํ–‰

docker-compose-yml์ด ์žˆ๋Š” ๊ฒฝ๋กœ๋กœ ์ด๋™ ํ›„ ์•„๋ž˜ ๋ช…๋ น์–ด ์ž…๋ ฅ ์‹œ docker-compse.yml ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ

์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰ํ•˜๊ณ  ๋งŒ์ผ ์ด๋ฏธ์ง€๊ฐ€ ์—†์œผ๋ฉด ๋นŒ๋“œ ํ›„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

sudo docker-compose up -d --build

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰์ค‘์ธ์ง€ ์•„๋ž˜๋ช…๋ น์–ด๋กœ ํ™•์ธํ•œ๋‹ค.

sudo docker ps -a

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

๋กœ์ปฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ EC2 IP(80 ๊ธฐ๋ณธ ํฌํŠธ๋ผ์„œ ์ƒ๋žต ๊ฐ€๋Šฅ)๋งŒ ์ž…๋ ฅํ•œ ๋‹ค์Œ ์•„๋ž˜์ฒ˜๋Ÿผ indexํŽ˜์ด์ง€๊ฐ€ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค.

์ •์ƒ์ ์œผ๋กœ Nginx์™€ Tomcat์ด ์—ฐ๋™์ด ๋˜์—ˆ๋‹ค.


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

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

๋Œ“๊ธ€