Repository of JobDri BackEnd
๋ก์ปฌ ์คํ:
cp .env.example .env
docker compose up --build๋ฐฐํฌ ์๋ฒ ์คํ:
cp .env.production.example .env
docker compose -f docker-compose.prod.yml up -dprod ํ๋กํ์ /actuator/health๋ฅผ ๋
ธ์ถํฉ๋๋ค.
CI:main,develop๋ธ๋์น push ๋ฐ PR์์ ํ ์คํธ์ Docker ์ด๋ฏธ์ง ๋น๋๋ฅผ ์คํํฉ๋๋ค.Deploy:main๋ธ๋์น push ๋๋ ์๋ ์คํ ์ GHCR์ ์ด๋ฏธ์ง๋ฅผ ํธ์ํ๊ณ , ๋ฐฐํฌ ์๋ฒ secret์ด ์์ผ๋ฉด SSH๋กdocker-compose.prod.yml์ ๊ฐฑ์ ํฉ๋๋ค.
GitHub Actions ๋ฐฐํฌ secret:
DEPLOY_HOSTDEPLOY_USERDEPLOY_PORToptional, default22DEPLOY_SSH_KEYDEPLOY_PATHGHCR_USERNAMEGHCR_TOKEN
๋ฐฑ์๋ API๋ Docker ์ด๋ฏธ์ง๋ก ๋น๋๋์ด GHCR์ ์ ๋ก๋๋๊ณ , GitHub Actions๋ฅผ ํตํด EC2 ์๋ฒ์ ๋ฐฐํฌ๋ฉ๋๋ค.
- ์๋ฒ: AWS EC2
t3.small - OS: Amazon Linux 2023
- DB: AWS RDS PostgreSQL
db.t3.micro - Redis: Upstash Redis
- ์น ์๋ฒ: Nginx
- ์ปจํ ์ด๋ ๋ฐํ์: Docker, Docker Compose
main๋ธ๋์น์ ๋ณ๊ฒฝ์ฌํญ์ด ๋ฐ์๋ฉ๋๋ค.- GitHub Actions๊ฐ Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํฉ๋๋ค.
- ์ด๋ฏธ์ง๋ฅผ GHCR์ ํธ์ํฉ๋๋ค.
- GitHub Actions๊ฐ EC2์ SSH๋ก ์ ์ํฉ๋๋ค.
- EC2์์
docker-compose.prod.yml์ ์ฌ์ฉํด ์ต์ ์ด๋ฏธ์ง๋ฅผ pullํ๊ณ API ์ปจํ ์ด๋๋ฅผ ์ฌ๊ธฐ๋ํฉ๋๋ค.
/opt/jobdri-api์๋ฒ์๋ ์๋ ํ์ผ์ด ํ์ํฉ๋๋ค.
docker-compose.prod.yml
.env
์ด์ API๋ Nginx reverse proxy์ Let's Encrypt ์ธ์ฆ์๋ฅผ ํตํด HTTPS๋ก ์ ๊ณต๋ฉ๋๋ค.
https://api.jobdri.site
- Nginx๋ 80/443 ์์ฒญ์ Spring Boot API ์ปจํ ์ด๋์ 8080 ํฌํธ๋ก ํ๋ก์ํฉ๋๋ค.
- SSL ์ธ์ฆ์๋ Certbot์ผ๋ก ๋ฐ๊ธํ์ผ๋ฉฐ ์๋ ๊ฐฑ์ ์ด ์ค์ ๋์ด ์์ต๋๋ค.
- ์ํ ํ์ธ:
https://api.jobdri.site/actuator/health
์ ์ ์๋ต:
{"status":"UP","groups":["liveness","readiness"]}