컴공생의 다이어리

[스프링 부트, Spring Boot] 환경변수 파일(application.yml) local, dev, prod 환경 분리 본문

Development/Spring & SpringBoot

[스프링 부트, Spring Boot] 환경변수 파일(application.yml) local, dev, prod 환경 분리

컴공 K 2023. 8. 20. 23:40

[Spring Boot] 환경변수 파일(application.yml) local, dev, prod 환경 분리

스프링 부트에서 로컬(local), 개발(dev), 운영(prod) 등의 환경을 분리해야 하는 경우 profile을 활용해 설정 정보를 분리할 수 있다. profile은 spring.config.activate.on-profile 을 통해서 profile 이름을 작성을 적고 하위에 해당 profile에 대한 설정을 작성해주면 된다. profile 환경 정보를 분리하는 방법으로는 아래와 같이 크게 2가지가 있다.

  1. 하나의 파일 안에서 환경 분리
  2. yml 파일 분리

 

 

하나의 파일 안에서 환경 분리

하나의 파일 안에서 --- 를 넣어서 profile을 분리한다.

# profile 정보가 없는 맨 위 부분은 모든 profile의 공통 설정임
spring:
  jpa:
    properties.hibernate.format_sql: true

---
spring:
  config:
    activate:
      on-profile: local
server:
  port: 1111

---
spring:
  config:
    activate:
      on-profile: dev
server:
  port: 2222

---
spring:
  config:
    activate:
      on-profile: prod
server:
  port: 3333

 

 

 

yml 파일 분리

하나의 파일이 아닌 환경별로 파일을 나누는 방법도 있다. 개인적으로 나는 환경별로 파일이 구분되는게 좀 더 명확해져서 이 방법을 선호한다.

# application.yml
server:
  port: 8080

spring:
  profiles:
    default: local # 기본 환경을 어떤 프로필로 할 것인가
# application-local.yml
spring:
  config:
    activate:
      on-profile: local
server:
  port: 1111
# application-dev.yml
spring:
  config:
    activate:
      on-profile: dev
server:
  port: 2222
# application-prod.yml
spring:
  config:
    activate:
      on-profile: prod
server:
  port: 3333

 

 

 

 

 

여러 profile 묶어 group 만들기

spring.profiles.group을 통해서 여러 profile을 묶어 하나의 profile로 만들 수 있다.

spring:
  profiles:
    group:
      "local": "localdb,common"
      "dev":  "devdb,common"
---
spring: # local 환경 db
  config:
    activate:
      on-profile: "localdb"
  datasource:
    driver-class-name: org.h2.Driver
    username: 이름
    url: jdbc:h2:tcp://localhost/~/local-test

---
spring: # dev 환경 db
  config:
    activate:
      on-profile: "devdb"
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: 이름
    url: 주소
    password: 비번

---
spring: # 공통 환경
  config:
    activate:
      on-profile: "common"
server:
  port: 8080

 

 

 

 

 

 

https://derveljunit.tistory.com/336

 

[스프링부트] Gradle 에서 프로퍼티 / YAML / application 중복 오류 해결하기

항상 메이븐만 쓰다가 그래들 환경으로 프로그래밍 하려니 새로운 걸 자주 접하게 되서 재밌다. 스프링부트에서 application 을 프로파일 환경에 맞게 가져올 때 공통으로 사용할 기본 application 이

derveljunit.tistory.com

https://velog.io/@yrc97/SpringBoot-application-%EC%84%A4%EC%A0%95%ED%8C%8C%EC%9D%BC%EC%9D%84-%ED%86%B5%ED%95%B4profile-%EC%84%B8%ED%8C%85

 

[SpringBoot] application 설정파일을 통해profile 세팅

실행환경: java11, IntelliJ IDEA - Ultimategithub 실제 코드는 이곳에서 확인할 수 있습니다.SpringBoot 2.4 부터 profile 설정이 업데이트 되었다고 합니다. 이와 관련해서 profile 을 적용하는 몇 가지 방법을 시

velog.io

 

728x90
Comments