
์ธํ๋ผ ๊ตฌ์ฑ


๊ณ ์ ์์ ์ด ์๋ ์ํฉ์์, ์ธํ๋ผ ๊ตฌ์ฑ ์ค ๊ฐ์ฅ ํฐ ๊ณ ๋ฏผ์ ๋น์ฉ์ด์๋ค. ๊ทธ๋์ AWS์ ๋ค์ํ ์๋น์ค ์ค ๊ฐ๊ฒฉ ๋๋น ์ฑ๋ฅ์ด ์ข์ Lightsail์ ์ ํํ๊ณ , GitHub Actions๋ฅผ ํ์ฉํ CI/CD๋ก Docker ์ด๋ฏธ์ง๋ฅผ ์๋ ๋ฐฐํฌํ๊ณ ์๋ค.
GitHub Actions๋ก ํ๊ฒฝ๋ณ์ ์ฃผ์ ํ๊ธฐ
ํ๊ฒฝ๋ณ์๊ฐ ๋์ด๋จ์ ๋ฐ๋ผ Github Actions workflow๋ฅผ ์์ ํ๋ ์์ ์ด ๋น๋ฒํ๊ฒ ์์ด์ ํด๋น ๋ด์ฉ์ ์ ๋ฆฌํด ๋ณด๊ณ ์ ํ๋ค.
GitHub Repository Settings
โ
โ (Secrets ๋ฑ๋ก)
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ GitHub Secrets โ
โ โโ DEV_DB_URL โ
โ โโ DEV_DB_PASSWORD โ
โ โโ ... โ
โโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
โ
โ ${{ secrets.* }}
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ GitHub Actions Runner โ
โ (deploy-dev.yml) โ
โ โ
โ jq -n \ โ
โ --arg db_pass "$..." \โ
โ '{ โ
โ environment: { โ
โ DB_PASSWORD: $... โ
โ } โ
โ }' โ
โโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
โ
โ deployment.json
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AWS Lightsail โ
โ Container Service โ
โ โ
โ create-container- โ
โ service-deployment โ
โโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
โ
โ Container ENV
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Spring Boot App โ
โ (Runtime) โ
โ โ
โ ${DEV_DB_URL} โ
โ ${DEV_DB_PASSWORD} โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
GitHub Repository Settings

application.yml ํ์ผ์ key ๊ฐ ๊ธฐ์ค์ผ๋ก Repository secrests์ ํ๊ฒฝ๋ณ์ ๊ฐ์ ์ถ๊ฐํด์ค๋ค.
Github Actions workflow ์์ฑ
deployment.json ์์ฑ
- name: Create deployment configuration
run: |
jq -n \
--arg db_url "${{ secrets.DEV_DB_URL }}" \
# .. ์๋ต
'{
containers: {
app: {
image: $app_image,
environment: {
KOU_DEV_DB_URL: $db_url,
# .. ์๋ต
},
},
},
}' > deployment.json
echo "=== Deployment Configuration ==="
cat deployment.json
deployment.json์ AWS Lightsail Container Service์ ์ด๋ค ์ปจํ ์ด๋๋ฅผ ์ด๋ป๊ฒ ๋ฐฐํฌํ ์ง ์ ์ํ๋ ๋ช ์ธ์ ์ญํ ์ ํด์ค๋ค.
๋ฌธ๋ฒ ์ค๋ฅ ์๋ JSON ํ์ผ์ ๋ง๋ค๊ธฐ ์ํด jq๋ฅผ ์ด์ฉํ๋ค.
--arg {๋ณ์๋ช } {๊ฐ}
- arg : jq ๋ด๋ถ์์ ์ฌ์ฉํ ๋ณ์ ์ ์ธ
- ๋ณ์๋ช : jq ๋ด๋ถ ๋ณ์๋ช (์์ `$` ๋ถ์ฌ์ ์ฌ์ฉ)
- ๊ฐ: GitHub Secrets์์ ๊ฐ์ ธ์จ ์ค์ ๊ฐ
{
"environment" : {
{Key} : ${value}
}
}
- ์ด๋ค ํ๊ฒฝ๋ณ์๋ฅผ ์ฃผ์ ํ ์ง๋ฅผ ์์ฑํ๋ค.
- Key : Springboot application.yml์ ์์ฑํ ๊ฐ๊ณผ ๋์ผํ๊ฒ ์์ฑํ๋ค.
- value: --arg๋ก ์ ์ธํ ๋ณ์๋ช ์ $๋ฅผ ๋ถ์ฌ์ ์์ฑํ๋ค.
AWS Lightsail ๋ฐฐํฌ
- name: Deploy to Lightsail
run: |
aws lightsail create-container-service-deployment \
--service-name ${{ env.SERVICE_NAME }} \
--region ${{ env.AWS_REGION }} \
--cli-input-json file://deployment.json
์์์ ์์ฑํ deployment.json ํ์ผ์ AWS Lightsail์ ์ ๋ฌํ์ฌ ์ค์ ๋ฐฐํฌ๋ฅผ ์คํํ๋ค.

๐ ๋ฌด์ฌํ dev ๋ฐฐํฌ ์๋ฃ !