Home > Development tools and environments > ๐Ÿ› ๏ธ[๊ฐœ๋ฐœ ๋„๊ตฌ ๋ฐ ํ™˜๊ฒฝ] Docker์™€ application.yml

๐Ÿ› ๏ธ[๊ฐœ๋ฐœ ๋„๊ตฌ ๋ฐ ํ™˜๊ฒฝ] Docker์™€ application.yml
Development tools Enviroments Docker

๐Ÿ” ํ•ต์‹ฌ ์ฐจ์ด ์š”์•ฝ

๊ตฌ๋ถ„ 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. ๐Ÿ”„ ๊ด€๊ณ„ ํ๋ฆ„ ์š”์•ฝ

  1. docker-compose.yml
    โžž ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„์šฐ๊ณ  SPRING_PROFILES_ACTIVE=prod ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ „๋‹ฌ
    โžž ์˜ˆ:
    environment:
      - SPRING_PROFILES_ACTIVE=prod
    
  2. Dockerfile
    โžž Spring Boot ์•ฑ์„ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค๊ณ  ์‹คํ–‰(java -jar)
    โžž JAR ์‹คํ–‰ ์‹œ, Spring Boot๋Š” application.yml์„ ๋จผ์ € ์ฝ๊ณ  ์ด์–ด์„œ application-prod.yml์„ ๋ฎ์–ด์“ฐ๊ธฐ ํ˜•์‹์œผ๋กœ ์ถ”๊ฐ€ ์ ์šฉ

  3. 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์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€ ์„ค์ •์„ ์ •์˜ํ•˜๋Š” ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.
์„œ๋กœ ๋‹ค๋ฅธ ์ฑ…์ž„์„ ๊ฐ€์ง€์ง€๋งŒ, ํ•จ๊ป˜ ์กฐํ•ฉํ•ด์„œ ์‹ค๋ฌด์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.