[์šฐ์‚ฌ๊ธฐ] AWS Lightsail ๋ฐฐํฌ ์‹œ, GitHub Actions๋กœ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ฃผ์ž…ํ•˜๊ธฐ

2026. 1. 26. 15:04ยท์šฐ์‚ฌ๊ธฐ ๊ฐœ๋ฐœ์ผ์ง€ ๐Ÿฐ

 

 

์ธํ”„๋ผ ๊ตฌ์„ฑ

 

๊ณ ์ • ์ˆ˜์ž…์ด ์—†๋Š” ์ƒํ™ฉ์—์„œ, ์ธํ”„๋ผ ๊ตฌ์„ฑ ์ค‘ ๊ฐ€์žฅ ํฐ ๊ณ ๋ฏผ์€ ๋น„์šฉ์ด์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ 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 ๋ฐฐํฌ ์™„๋ฃŒ !

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'์šฐ์‚ฌ๊ธฐ ๊ฐœ๋ฐœ์ผ์ง€ ๐Ÿฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์šฐ์‚ฌ๊ธฐ] Github Actions DEV ๋ฐฐํฌ์šฉ workflow ์ž‘์„ฑ  (1) 2026.01.21
[์šฐ์‚ฌ๊ธฐ] Github Actions PR ํ…Œ์ŠคํŠธ์šฉ workflow ๋ฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ , ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์„ฑ  (0) 2026.01.20
[์šฐ์‚ฌ๊ธฐ] OAuth 2.0 Playground๋กœ ๊ตฌ๊ธ€ ์†Œ์…œ ๋กœ๊ทธ์ธ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ธฐ  (0) 2026.01.15
'์šฐ์‚ฌ๊ธฐ ๊ฐœ๋ฐœ์ผ์ง€ ๐Ÿฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์šฐ์‚ฌ๊ธฐ] Github Actions DEV ๋ฐฐํฌ์šฉ workflow ์ž‘์„ฑ
  • [์šฐ์‚ฌ๊ธฐ] Github Actions PR ํ…Œ์ŠคํŠธ์šฉ workflow ๋ฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ , ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์„ฑ
  • [์šฐ์‚ฌ๊ธฐ] OAuth 2.0 Playground๋กœ ๊ตฌ๊ธ€ ์†Œ์…œ ๋กœ๊ทธ์ธ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ธฐ
ํ•ด๋‹ˆ ๐ŸŒฑ
ํ•ด๋‹ˆ ๐ŸŒฑ
๊ธฐ๋ก์ด ์ž์‚ฐ์ด๋‹ค ( •ฬ€แด—•ฬ )ูˆโœ๏ธ
  • ํ•ด๋‹ˆ ๐ŸŒฑ
    haeni.dev
    ํ•ด๋‹ˆ ๐ŸŒฑ
  • ๋งํฌ

    • github
    • velog
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (25)
      • ์šฐ์‚ฌ๊ธฐ ๊ฐœ๋ฐœ์ผ์ง€ ๐Ÿฐ (4)
      • Today I Learned ๐Ÿง (19)
      • ๋ถ„๋…ธ์˜ ํƒ€์ดํ•‘ ๋กœ๊ทธ ๐Ÿ”ฅ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    IT
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    ci/cd
    ๋ฐฑ์—”๋“œ
    springboot
    ๊ฐœ๋ฐœ
    ์ฝ”ํ…Œ
    ๊ฐœ๋ฐœ์ž
    AWS
    til
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.5
ํ•ด๋‹ˆ ๐ŸŒฑ
[์šฐ์‚ฌ๊ธฐ] AWS Lightsail ๋ฐฐํฌ ์‹œ, GitHub Actions๋กœ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ฃผ์ž…ํ•˜๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”