๐ ํต์ฌ ์ฐจ์ด ์์ฝ
๊ตฌ๋ถ | Docker | application.yml |
---|---|---|
์ข ๋ฅ | ๋๊ตฌ/ํ๋ซํผ | ์ค์ ํ์ผ |
์ญํ | ์ปจํ ์ด๋ ์คํ ๋ฐ ๋ฐฐํฌ ํ๊ฒฝ ๊ตฌ์ฑ | Spring Boot ๋ฑ ์ฑ์ ๋ด๋ถ ์ค์ ์ ์ |
๋์ | ์ธํ๋ผ, ๋คํธ์ํฌ, ์ด๋ฏธ์ง, ์ปจํ ์ด๋ ๋ฑ | DB ์ ๋ณด, ํฌํธ, ๋ณด์ ๋ฑ ์ฑ ๋ด๋ถ ์ค์ |
์์ | Dockerfile, docker-compose.yml | spring.datasource.url, jwt.secret-key ๋ฑ |
โ ์์ธํ ์ค๋ช
1. ๐ณ Docker๋?
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์ด๋๋ก ์คํํ๋ ํ๋ซํผ
- ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ค ํ๊ฒฝ์์๋ ์ผ๊ด๋๊ฒ ์คํ๋ ์ ์๊ฒ ํด์ค
- ๊ตฌ์ฑ:
- Dockerfile: ์ปจํ ์ด๋ ๋ง๋ค๊ธฐ ์ํ ์ด๋ฏธ์ง ์ ์
- docker-compose.yml: ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ํ๋ฒ์ ๊ด๋ฆฌ
2. ๐ application.yml์ด๋?
- Spring Boot์ ์ ํ๋ฆฌ์ผ์ด์ ์ค์ ํ์ผ
- DB ์ฐ๊ฒฐ, ํฌํธ, ์ธ์ฆ ํค, CORS, ๋ก๊ทธ ๋ฑ ์ฑ ๋ด๋ถ ์ค์ ๊ฐ์ ์ ์
# ์์: application.yml spring: datasource: url: jdbc:mysql://localhost:3306/blog username: root password: secret server: port: 8080
3. ๐ฏ ํจ๊ป ์ฌ์ฉํ๋ ์์
Docker์์ ์ปจํ ์ด๋๋ฅผ ์คํํ ๋, ํ๊ฒฝ ๋ณ์๋ก application.yml์์ ์ฌ์ฉํ ๊ฐ์ ์ธ๋ถ์์ ์ฃผ์ ํ ์ ์์ด์:
# docker-compose.yml
services:
blog-backend:
image: blog-api:latest
ports:
- "8080:8080"
environment:
- SPRING_PROFILES_ACTIVE=prod
- DB_PASSWORD=${DB_PASSWORD}
๊ทธ๋ฆฌ๊ณ application-prod.yml์๋ ์๋์ฒ๋ผ ์์ฑํด ๋์ ์ ์์ฃ :
spring:
datasource:
password: ${DB_PASSWORD}
4. ๐๏ธ ์ ์ฒด ๊ตฌ์ฑ ํ๋ฆ ๊ตฌ์กฐ๋.
์๋ฅผ ๋ค์ด ํ๋์ Spring Boot ํ๋ก์ ํธ์ ๋ค์ 4๊ฐ์ง ํ์ผ์ด ์์ ๋์ ๊ด๊ณ ๊ตฌ์กฐ๋์ ๋๋ค.:
- application.yml
- application-prod.yml
- Dockerfile
- docker-compose.yml
๐ฆ ํ๋ก์ ํธ ๋ฃจํธ
โ
โโโ ๐ application.yml โ ๊ธฐ๋ณธ ์ค์ (๊ณตํต)
โโโ ๐ application-prod.yml โ ํ๋กํ์ด prod์ผ ๋๋ง ์ ์ฉ (DB ๋ฑ ์ค์๋ฒ์ฉ)
โ
โโโ ๐ณ Dockerfile โ Spring Boot ์ฑ์ Docker ์ด๋ฏธ์ง๋ก ๋ง๋ฆ
โ โโโ ๋ด๋ถ์์ JAR ์คํ (ex: java -jar app.jar)
โ
โโโ ๐ณ docker-compose.yml โ ์ฌ๋ฌ ์๋น์ค ์ปจํ
์ด๋ ์ผ๊ด ์คํ
โ โโโ ํ๊ฒฝ ๋ณ์๋ก SPRING_PROFILES_ACTIVE=prod ์ค์
โ
โโโ ๐ ์ต์ข
์คํ ํ๋ฆ
docker-compose โ ์ปจํ
์ด๋ ์คํ โ Dockerfile๋ก ๋ง๋ ์ด๋ฏธ์ง ์คํ
โโ Spring Boot ์ฑ ์์
โโ application.yml ๋ก๋ฉ
โโ (prod ํ๋กํ์ด๋ฉด) application-prod.yml๋ ํจ๊ป ๋ก๋ฉ
5. ๐ ๊ด๊ณ ํ๋ฆ ์์ฝ
-
docker-compose.yml
โ ์ปจํ ์ด๋๋ฅผ ๋์ฐ๊ณ SPRING_PROFILES_ACTIVE=prod ํ๊ฒฝ ๋ณ์ ์ ๋ฌ
โ ์:environment: - SPRING_PROFILES_ACTIVE=prod
-
Dockerfile
โ Spring Boot ์ฑ์ ์ด๋ฏธ์ง๋ก ๋ง๋ค๊ณ ์คํ(java -jar)
โ JAR ์คํ ์, Spring Boot๋ application.yml์ ๋จผ์ ์ฝ๊ณ ์ด์ด์ application-prod.yml์ ๋ฎ์ด์ฐ๊ธฐ ํ์์ผ๋ก ์ถ๊ฐ ์ ์ฉ -
application.yml / application-prod.yml
โ ์ค์ ํ์ผ๋ค:- application.yml: ๊ณตํต ์ค์
- application-prod.yml: ์ด์ ํ๊ฒฝ์์ ๋ฎ์ด์ธ ์ค์ (e.g. ์ค DB, JWT ํค ๋ฑ)
6. ๐ ์๊ฐ์ ํ๋ฆ ์ด๋ฏธ์ง (ASCII ๊ตฌ์กฐ๋)
[docker-compose.yml]
โ
โผ
Set SPRING_PROFILES_ACTIVE=prod
โ
โผ
Run container
โ
โผ
[Dockerfile โ java -jar app.jar]
โ
โผ
Spring Boot App Start
โ
โโโ application.yml โ ๊ธฐ๋ณธ ์ค์ ๋ก๋
โโโ application-prod.yml โ prod ํ๋กํ์ด๋ฉด ๋ณํฉ ์ ์ฉ
7. ๐ ์ค๋ฌด ํ
-
Local ํ๊ฒฝ : SPRING_PROFILES_ACTIVE=local
โ application-local.yml ๋ฐ๋ก ์ค์ - Dev, Prod ๋ถ๋ฆฌ : application-dev.yml, application-prod.yml ๋ก ๋๋ ๊ด๋ฆฌ
- application.yml์๋ ๊ณตํต ์ค์ ๋ง ๋๊ณ , ๋๋จธ์ง๋ ํ๋กํ๋ณ๋ก override
โ ๊ฒฐ๋ก
Docker๋ ๋ฐฐํฌ/์คํ ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ ๋๊ตฌ์ด๊ณ , application.yml์ ์ ํ๋ฆฌ์ผ์ด์ ๋ด๋ถ ์ค์ ์ ์ ์ํ๋ ํ์ผ์ ๋๋ค.
์๋ก ๋ค๋ฅธ ์ฑ ์์ ๊ฐ์ง์ง๋ง, ํจ๊ป ์กฐํฉํด์ ์ค๋ฌด์์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.