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 Image push ํ๊ธฐ
docker push hjungyo/berich:latest
# docker push [DockerHub ID]/[image ํ์ผ๋ช
]
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 ์ด๋ฏธ์ง ๋ค์ด๋ก๋
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 ๊ณต๊ฐ์ ์ด์ฉํ๋ฉด ํด๊ฒฐํ ์ ์๋ค!
'๐ซ Backend > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring Boot์์ Supabase ์ฌ์ฉํ๊ธฐ (Kotlin) (0) | 2025.02.25 |
---|---|
Spring boot ์์ H2 ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉํ๊ธฐ (Kotlin) (0) | 2025.02.20 |
JPA ํบ์๋ณด๊ธฐ (0) | 2025.02.16 |
[Spring Boot] Custom Exception ์ค์ (0) | 2024.08.19 |
[Spring Boot] MySQL JPA ์ฐ๋ (3) | 2024.07.22 |