[ํ๋ก์ ํธ ์ผ์ง] 4๋ฒ์งธ ํ๋ก์ ํธ - 1. ์๋ฒ ์ค๊ณํ๊ธฐ
[ํ๋ก์ ํธ ์ผ์ง] 4๋ฒ์งธ ํ๋ก์ ํธ - 2. ์คํ๋ง ํ๋ก์ ํธ ์์ฑ, ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ฑ
[ํ๋ก์ ํธ ์ผ์ง] 4๋ฒ์งธ ํ๋ก์ ํธ - 3. JPA Entity ๊ด๊ณ ์ค์ ํ๊ธฐ
์ ๋ฒ์ฃผ์ ์งํํ๋ ์ผ์ด์ง๋ง, ๋ค๋ฆ๊ฒ ์์ฑ์ ํ๋ค. ๊ทธ๋์ ์งํํ ๊ฒ ๋ง์๋ฐ ๋ฐ๋ ธ๋ค๐ฅฒ
ํ์ฌ ๋ฐฑ์๋ ์๋ฒ์์ API ๊ฐ๋ฐ์ด ์กฐ๊ธ์ฉ ์งํ๋๊ณ ์๋ค. ํ๋ก ํธ์๋์์ API ์ฐ๊ฒฐ ํ ์คํธ๋ฅผ ์ํด ํ ์คํธ ์๋ฒ๋ฅผ ๋ฐ๋ก ๋ฐฐํฌํ ํ์๊ฐ ์์๋ค. ์ค์ ์๋น์ค๋ EC2์์ ๋ฐฐํฌํ๊ธฐ๋ก ํ์ง๋ง, ์์ง ์ถ์ ์ ์ด๋ผ ์๋ฒ๋ฅผ ๊ตฌ๋งคํ์ง ์์๋ค. ๊ทธ๋ฆฌ๊ณ ํ ์คํธ ์๋ฒ๋ 5์๊น์ง ๊ฐ๋ฐํ๋ ๋์ ์ ๊น ์ธ ๊ฑฐ๋ผ์ ๋ค๋ฅธ ํ์์ GCP 1๋ ๋ฌด๋ฃ ์๋น์ค๋ก ๊ตฌ๋ํ๊ธฐ๋ก ํ๋ค.
ํ์ ์ธํ๋ผ๋ฅผ ์ ๋ดํ๋ ์ฌ๋์ด ์๋ค๋ฉด, ๋ฐฑ์๋์์ ์ธํ๋ผ๋ ๊ฐ์ด ํ๊ฒ ๋๋ ๊ฒ ๊ฐ๋ค. ์ด์ ์ ์ธํผ ํ๋ก์ ํธ์์ ์ธํ๋ผ๋ฅผ ๋ด๋นํ๋ ๊ฒฝํ์ด ๋์์ด ๋๋ ๊ฒ ๊ฐ๋ค. (๊ณ ์ํ๋ฉด์ ๋ฐฐ์ฐ๋ ์ธํ๋ผ..)
์ํคํ ์ฒ
ํ๋ก์ ํธ ํ๊ฒฝ
๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ
- OS : MAC OS(M2)
- IDE : IntelliJ IDEA 2023.3.5 (Ultimate Edition)
- Server : Amazon corretto 17.0.10, Spring Boot 3.2.4
- DB : MySQL 8.0.36
- Deploy : Docker 25.0.3, Dockerhub
- Git : Github
ํด๋ผ์ฐ๋ ๊ฐ๋ฐ ํ๊ฒฝ
- Server : Google Cloud Platporm
- OS : Ubuntu 20.04.6 LTS
- Deploy : Docker 26.0.0, Dockerhub
- DB : MySQL Latest
GCP ์ธ์คํด์ค ์ ์ํ๊ธฐ, ssh ๊ฐ๋ฐ ํ๊ฒฝ ์ธํ
ํ์์ด ์์ฑํ GCP ํ๋ก์ ํธ์ ๊ณต์ ๊ถํ์ ๋ฐ์๊ณ , ๋ด ๋ก์ปฌ ์ปดํจํฐ์์ GCP ์ธ์คํด์ค์ ์ ์์ ํด์ผ ํ๋ค.
ssh ์ ์์ ํ๊ธฐ ์ํด ํค๋ฅผ ๋ฑ๋กํ๊ณ , ssh ์ ์์ ์ํ Termius ์ธํ ์ ํ๋ค.
ํค ์์ฑํด์ GCP์ ๊ณต๊ฐํค ๋ฑ๋กํ๊ธฐ
GCP ssh ์ ์์ ํ๊ธฐ ์ํด์๋ ํค(๊ฐ์ธํค, ๊ณต๊ฐํค)๋ฅผ ์์ฑํ๊ณ , ๊ณต๊ฐํค๋ฅผ GCP VM ์ธ์คํด์ค์ ๋ฑ๋ก์ ํด์ผ ํ๋ค.
๊ฐ์ธํค์ ๊ณต๊ฐํค๋ ๋ด ์ปดํจํฐ์์ `ssh-keygen -C [์ด๋ฆ]` ์ผ๋ก ์์ฑํ ์ ์์๋ค.
๊ทธ๋ฆฌ๊ณ ์์ฑ๋ ๊ณต๊ฐํค(`id_rsa.pub`)๋ฅผ ๋ณต์ฌํ์ฌ GCP์ ๋ฑ๋ก์ ํด์คฌ๋ค.
Termius๋ก SSH ์๊ฒฉ ์ ์
๊ธฐ๋ณธ ํฐ๋ฏธ๋๋ก ssh ์ ์์ ํ ์ ์์ง๋ง, ๋งค๋ฒ ๋ช ๋ น์ด ์ ๋ ฅํ๊ณ ๋น๋ฒ ์ ๋ ฅํด์ ์ ์ํ๋ ๊ฒ์ด ๊ท์ฐฎ๋ค.
Termius๋ ssh ์๊ฒฉ ์ ์ ํ๋ซํผ์ธ๋ฐ, ์๋ฒ host๋ ํค ๋ฑ๋ก๋ง ํด์ฃผ๋ฉด ํด๋ฆญ ํ ๋ฒ๋ง์ผ๋ก ์ฝ๊ฒ ์ ์์ ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ SFTP๋ ์ ๊ณตํ์ฌ ๋ด ๋ก์ปฌ ์ปดํจํฐ์ ์๋ ํ์ผ๋ ์ฝ๊ฒ ์ด๋์ํฌ ์ ์๋ค. + UI๊น์ง ์ข์
Termius์์ ์ ์์ ํ๊ธฐ ์ํด์๋ ๊ฐ์ธํค๋ฅผ ๋ฑ๋กํด์ผ ํ๋ค. ํค ์์ฑํ ํด๋์์ `cat ~/.ssh/id_rsa`๋ก ์์๋ผ ์ ์์๋ค.
๋์ปค ์ค์น ๋ฐ DB ์ค์น
๋์ปค๋ก ์๋ฒ ๋ฐฐํฌํ๊ธฐ
CI/CD๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ด ๋ฆฌ์์ค๊ฐ ๋๋ ์ผ์ด๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ๋๋ฉด ๋์ค์ ๊ตฌ์ถํ๊ธฐ๋ก ํ๊ณ , ์ผ๋จ ์๋ ๋ฐฐํฌ๋ฅผ ํ๊ธฐ๋ก ํ๋ค.
์ด์ ์ Docker๋ก ์๋๋ฐฐํฌ๋ฅผ ํด๋ณธ์ ์ด ์์ด์ ๊ธ๋ฐฉ ํ ์ค ์์์ผ๋.. ๋ฌ๋ผ์ง ๊ฐ๋ฐ ํ๊ฒฝ(MAC OS๐) ๋๋ฌธ์ ์ ๋ฅผ ๋จน์๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก CI/CD๋ฅผ ๋นจ๋ฆฌ ๋์ ํด์ผ ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค. ๋ณ๊ฒฝ ์ฌํญ์ด ์๊ธธ ๋๋ง๋ค ๋งค๋ฒ ์๋์ผ๋ก ๋ฐฐํฌํ๋ ค๋ ๊ท์ฐฎ๋ค.
์ด์ ์ GitLab์ Jenkins๋ฅผ ์ด์ฉํด์ CI/CD๋ฅผ ๊ตฌ์ถํด๋ณธ์ ์ด ์๋ค. ํ์ง๋ง Github์ Github Action์ ๋ง์ด ์ด๋ค๊ณ ํด์ ์ด๊ฑธ ๋ฐฐ์์ ์ ์ฉํด์ผ ํ๋ ์๊ฐ์ค์ด๋ค.
์๋ ๋ฐฐํฌ ๊ณผ์
- ๋ก์ปฌ์์ ํ๋ก์ ํธ ๋น๋ํ๊ธฐ
./gradlew build
- ๋ก์ปฌ์์ ๋์ปค ์ด๋ฏธ์ง ๋น๋
docker build. -t [docker๊ณ์ ๋ช
]/[ํ๋ก์ ํธ๋ช
] .
๋์ค์ `docker run` ํ ๋, ์๋ฌ๊ฐ ๋ฌ๋ค.
The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64/v3) and no specific platform was requested ...
๋ฌธ์ ํด๊ฒฐ ์ฐธ๊ณ : [Docker] ์ด๋ฏธ์ง ๋น๋ ํ๋ซํผ ํธํ์ฑ ๊ด๋ จ ์๋ฌ (linux/amd64)
๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋ฐ ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๊ณ ํ๋ค. ๋งฅ๋ถ M ๊ณ์ด ์นฉ์ด Arm64 ์ํคํ ์ฒ๋ผ์ ํธํ์ฑ์ ์ํด ๋์ปค ์ด๋ฏธ์ง๋ ๊ฐ์ ์ํคํ ์ฒ๋ก ๋น๋๋ฅผ ํด์ค์ผ ํ๋ค.
(๋งฅ๋ถ ๋๋ถ์(?) ๋ค์ํ ํธํ์ฑ ์๋ฌ๋ฅผ ๋ง๋๋ฉฐ CPU์ ๋ํด ๊ณต๋ถํ๊ฒ ๋๋ ๊ฒ ๊ฐ๋ค)
docker build --platform linux/amd64 -t [docker๊ณ์ ๋ช
]/[ํ๋ก์ ํธ๋ช
] .
`--platform linux/amd64` ์ต์ ์ ์ถ๊ฐ๋ก ์คฌ๋ค.
- ๋ก์ปฌ์์ Docker Hub์ ์ด๋ฏธ์ง ์ ๋ก๋
docker push [docker๊ณ์ ๋ช
]/[ํ๋ก์ ํธ๋ช
]
- ์๋ฒ์์ ๋์ปค ์ด๋ฏธ์ง ๊ฐ์ ธ์ค๊ธฐ
docker pull [docker๊ณ์ ๋ช
]/[ํ๋ก์ ํธ๋ช
]
- ๋์ปค ์ด๋ฏธ์ง ์คํ
docker run --name [์ปจํ
์ด๋์ด๋ฆ] -d -p [ํฌํธ๋ฒํธ]:[ํฌํธ๋ฒํธ] [docker๊ณ์ ๋ช
]/[ํ๋ก์ ํธ ์ด๋ฆ]
'Project' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Project/4th] ๋ฒ์ ๋, ์ขํ๊ฐ ๋ฐ์ดํฐ DB์ ์ ์ฅํ๊ธฐ(2) (0) | 2024.06.10 |
---|---|
[Project/4th] ๋ฒ์ ๋, ์ขํ๊ฐ ๋ฐ์ดํฐ DB์ ์ ์ฅํ๊ธฐ(1) (0) | 2024.06.01 |
[Project/4th] 3. JPA Entity ๊ด๊ณ ์ค์ ํ๊ธฐ (0) | 2024.03.27 |
[Project/4th] 2. ์คํ๋ง ํ๋ก์ ํธ ์์ฑ, ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ฑ (0) | 2024.03.26 |
[Project/4th] 1. ์๋ฒ ์ค๊ณํ๊ธฐ (0) | 2024.03.18 |