๋ฐ˜์‘ํ˜•

 

EC2 ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๋ฐฉ๋ฒ•์€ ์ด์ „ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”!

๋กœ์ปฌ์—์„œ Docker ์„ค์ •

 

Jar ํŒŒ์ผ ๋นŒ๋“œํ•˜๊ธฐ

 

๋ณดํ†ต ๋นŒ๋“œ๋ฅผ ํ•  ๋•Œ ./graldew clean build ๋ฅผ ๋งŽ์ด ๋ดค์„ํ…๋ฐ 

 

์ด๋ฒˆ์—๋Š” ./gradlew clean bootJar๋ฅผ ํ†ตํ•ด Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ JARํŒŒ์ผ๋งŒ ์ƒ์„ฑํ–ˆ์Œ 

 

./gradlew build๋Š” bootJar๋ฅผ ํฌํ•จํ•˜์—ฌ ๋‚ด๋ถ€ ๋™์ž‘์ด ๋” ๊ธธ๋‹ค

๋ฐ˜๋ฉด, bootJar์˜ ๊ฒฝ์šฐ ๋‹จ์ˆœํžˆ ํ”„๋กœ์ ํŠธ์˜ jarํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๋ชฉ์ ์œผ๋กœ ๋นŒ๋“œ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค

(clean ์ž‘์—…์€ build/ ์™€ ๊ฐ™์€ ๋นŒ๋“œ ์‚ฐ์ถœ๋ฌผ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ญ์ œํ•˜์—ฌ ์ด์ „ ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•จ)

 

Dockerfile ์ƒ์„ฑํ•˜๊ธฐ

# Dockerfile

# jdk17 Image Start
FROM openjdk:17

# jar ํŒŒ์ผ ๋ณต์ œ
COPY build/libs/*.jar app.jar

# ์‹คํ–‰ ๋ช…๋ น์–ด
ENTRYPOINT ["java", "-jar", "app.jar"]

 

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

 

์šฐ์„  ๋„์ปค ํ—ˆ๋ธŒ์— ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์˜ฌ๋ฆด๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๊ทธ์ธ์„ ํ•ด์ฃผ์–ด์•ผ ํ•จ!

 

(์•„์ด๋””๊ฐ€ ์—†๋‹ค๋ฉด docker ํ™ˆํŽ˜์ด์ง€์—์„œ ํšŒ์›๊ฐ€์ž… ํ›„ ์ง„ํ–‰)

 

docker login -u [username]

 

์ด๋ ‡๊ฒŒ ํ•˜๊ณ  password๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋จ

 

 docker build -t hjungyo/berich .
 
 # docker build -t [DokerHub ID]/[์ด๋ฏธ์ง€๋ช…]:[ํƒœ๊ทธ๋ช…] [Dockerfile ์œ„์น˜]
 # ํƒœ๊ทธ ์ง€์ • X์‹œ latest ์ง€์ •๋จ

 

=> Dockerfile์ด ์žˆ๋Š” ์œ„์น˜์—์„œ ์‹คํ–‰ํ•ด์•ผ . ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์•„๋‹ˆ๋ผ๋ฉด ๊ฒฝ๋กœ๋ฅผ ์ง์ ‘ ์ง€์ •ํ•ด์ค˜์•ผ ํ•จ!
(๋งŒ์•ฝ ARM๊ธฐ๋ฐ˜ ex. ๋งฅ๋ถ m1 ๋“ฑ์˜ ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์–ด ๋ฐ‘์˜ trouble shooting ๋ถ€๋ถ„ ์ฐธ๊ณ ํ•˜์—ฌ docker build ํ•ด์ค˜์•ผํ•จ!!)

 

docker images๋กœ image๊ฐ€ ๋งŒ๋“ค์–ด์กŒ๋‚˜ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ

 

Docker Image push ํ•˜๊ธฐ

 

docker push hjungyo/berich:latest

# docker push [DockerHub ID]/[image ํŒŒ์ผ๋ช…]

 

Docker Desktop์„ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ

 

 

AWS EC2์—์„œ Docker ์„ค์ •ํ•˜๊ธฐ

 

Docker ์„ค์น˜ํ•˜๊ธฐ

 

Docker ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์— ์žˆ๋Š” Ubuntu ์„ค์น˜๋ฅผ ๋”ฐ๋ผํ•˜๋ฉด ๋จ!

(https://docs.docker.com/engine/install/ubuntu)

 

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

 

 

 

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

 

 

docker --version ์œผ๋กœ ์„ค์น˜ ํ™•์ธ

 

Docker ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ

 

Docker ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ์˜ ๊ฒฝ์šฐ sudo docker pull hjungyo/berich ์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ํ• ํ…๋ฐ 

 

ํ•ด๋‹น ๋„์ปค ์ด๋ฏธ์ง€๊ฐ€ local ํ™˜๊ฒฝ์— ์—†์„ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ hub์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜๋ฏ€๋กœ ์ƒ๋žตํ•ด๋„ ๋จ!

 

Docker  ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ํ•˜๊ธฐ

 

sudo docker run -d -p 8080:8080 hjungyo/berich

# docker run -d -p [๋กœ์ปฌ port]:[๋กœ์ปฌ port] [DockerHub ID]/[์ด๋ฏธ์ง€๋ช…]

 

์˜ต์„  ์„ค๋ช…

-d
: ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰

-p : ์‹คํ–‰ํ•  ํฌํŠธ ์„ค์ •

(-p 1111:2222 ๋ผ๋ฉด pc์—์„œ๋Š” 1111 ํฌํŠธ๋กœ ์‹คํ–‰๋˜๊ณ , docker์—์„œ๋Š” 2222 ํฌํŠธ์—์„œ ์‹คํ–‰๋œ๋‹ค๊ณ  ๋ณด๋ฉด ๋จ)

=> ๋„์ปค ๋‚ด๋ถ€์—๋„ ๋”ฐ๋กœ ํฌํŠธ๋ฒˆํ˜ธ๊ฐ€ ์กด์žฌํ•จ

 

 

Trouble Shooting

 

 

์ด ๊ฒฝ๊ณ ๋Š” ์ด๋ฏธ์ง€๊ฐ€ ARM64 ์•„ํ‚คํ…์ฒ˜์šฉ์œผ๋กœ ๋นŒ๋“œ๋œ ๋ฐ˜๋ฉด, ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์ด AMD64 ์•„ํ‚คํ…์ฒ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค..

(๋งฅ๋ถ m1 ์‚ฌ์šฉ์ค‘...)

docker buildx build --platform linux/amd64,linux/arm64 -t hjungyo/berich:latest --push .

 

์ด๋ ‡๊ฒŒ buildx ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ€ํ‹ฐ ์•„ํ‚คํ…์ฒ˜ ์ด๋ฏธ์ง€ ๋นŒ๋“œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค! 
(push๋„ ๋ฐ”๋กœ ๋˜๊ฒŒ ํ–ˆ์œผ๋‹ˆ docker hub์—์„œ ํ™•์ธํ•ด๋ณด๋ฉด ๋จ)

 

=> --platform linux/amd64,linux/arm64 ์˜ต์…˜์„ ํ†ตํ•ด ๋‘ ๊ฐ€์ง€ ํ”Œ๋žซํผ(AMD64์™€ ARM64)์„ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œ!

 

 

ํ•˜์ง€๋งŒ ๊ทธ๋ž˜๋„ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ 

sudo docker run --platform linux/amd64 -d -p 8080:8080 hjungyo/berich

 

์ด๋ ‡๊ฒŒ runํ•  ๋•Œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ง€์ •ํ•ด์ฃผ๊ณ  run์„ ํ•˜๋‹ˆ๊นŒ ํ•ด๊ฒฐ๋จ!

 

 

๋งŒ์•ฝ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ด๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด

 

sudo docker ps -a ๋กœ exit ๋œ ์ปจํ…Œ์ด๋„ˆ id๋ฅผ ํ™•์ธํ•˜๊ณ 

 

sudo docker logs [์ปจํ…Œ์ด๋„ˆ id] ๋กœ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!

 

ํ™•์ธํ–ˆ๋Š”๋ฐ datasource ์„ค์ • ๊ด€๋ จ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด

 

https://hanjungyo.tistory.com/75

 

Docker๋กœ EC2์— MySQL ์„ค์น˜ํ•˜๊ธฐ

EC2์— mysql์„ docker๋ฅผ ์ด์šฉํ•ด์„œ ์˜ฌ๋ ค๋ณด์ž~! EC2์— ssh๋กœ ์ ‘์†์„ ํ•˜๊ณ  MySQL Docker Image ๋‹ค์šด๋กœ๋“œ sudo docker pull mysql // ์ œ์ผ ์ตœ์‹  ๋ฒ„์ „ ๋‹ค์šด๋กœ๋“œ// latest๋Š” 9.0์ธ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์„œ 8.0์„ ์‚ฌ

hanjungyo.tistory.com

 

 

๋จผ์ € EC2์—์„œ MySQL ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ ํ›„

 

Spring Boot์˜ application.properties์—์„œ ํ•ด๋‹น ์ฃผ์†Œ๋กœ db๋ฅผ ์—ฐ๊ฒฐํ•œ ํ›„ ๋‹ค์‹œ ๋นŒ๋“œํ•ด์„œ ์‹คํ–‰ํ•ด๋ณด์ž!

(RDS๋‚˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด EC2์— MySQL์„ ๋„์šธ ํ•„์š”๋Š” X)

 

๋งŒ์•ฝ Out of Memory ๊ฐ™์ด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ ์—๋Ÿฌ๊ฐ€ ๋œจ๋ฉด 

 

https://hanjungyo.tistory.com/76

 

AWS EC2 ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ํ˜„์ƒ ํ•ด๊ฒฐ (Swap Memory)

ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐฐํฌํ•˜๋˜ ์ค‘ AWS EC2์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ํ˜„์ƒ์œผ๋กœ ssh ์ ‘์†์ด ์•ˆ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ๋‹ค...(ํ”„๋ฆฌํ‹ฐ์–ด ์‚ฌ์šฉ์ค‘)  ํ”„๋ฆฌํ‹ฐ์–ด๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” t2.micro ์ธ์Šคํ„ด์Šค ์œ ํ˜•์€ ๋žจ์ด 1GB์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ

hanjungyo.tistory.com

 

Swap ๊ณต๊ฐ„์„ ์ด์šฉํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค!

๋ฐ˜์‘ํ˜•