Spring Boot profile 환경별 설정하기(YAML)

반응형

Spring Boot에서 로컬, 개발, 실서비스 같은 여러 환경을 하나의 application.yml 파일에 설정하고 사용하는 방법에 대해서 알아보자.

 

YAML 설정

하나의 application.yml 파일에 여러 환경의 설정 정보를 저장하려면 spring.profiles 를 통해 설정하면 된다.

---로 구분 한다.

# local, dev, prod 공통 설정
server:
  port: 8080
  tomcat:
    uri-encoding: UTF-8

---

spring:
  profiles: local
  datasource:
    url: "jdbc:mysql://test-server/test"
    username: "dbuser"
    password: "dbpass"

---

spring:
  profiles: dev
  datasource:
    url: "jdbc:mysql://test-server/test"
    username: "dbuser"
    password: "dbpass"


---
spring:
  profiles: prod
  datasource:
    url: "jdbc:mysql://service-server/web"
    username: "proddbuser"
    password: "proddbpass"

 

 

 

 

만약 Spring Boot 2.4 를 이용한다면 아래같은 방법도 고려해보자.

spring.profiles 가 deprecated 되었다.

spring.profiles.group.<source> 를 이용해서 여러 프로파일들을 한꺼번에 그룹지어 하나의 프로파일로 만들수 있다.

spring:
  profiles:
    group:
      "local": "testdb,common"
      "dev":  "testdb,common"
      "prod": "proddb,common"


---

spring:
  config:
    activate:
      on-profile: "proddb"
  datasource:
    url: "jdbc:mysql://service-server/web"
    username: "proddbuser"
    password: "proddbpass"

---


spring:
  config:
    activate:
      on-profile: "testdb"
  datasource:
    url: "jdbc:mysql://test-server/test"
    username: "dbuser"
    password: "dbpass"
 
---

spring:
  config:
    activate:
      on-profile: "common"

server:
  port: 8080
  tomcat:
    uri-encoding: UTF-8

위에서도 설명했듯이  spring.profiles.group.<source>을 사용하면 관련 프로파일 그룹에 대한 논리적 이름을 정의할 수 있습니다.

위 예제는 proddbcommon 프로파일로 구성된  prod 프로파일 그룹 생성하였다.

spring.profiles.active=prod 로 실행하게 되면 proddbcommon 두개의 프로파일들을 한번에 실행할 수 있다.

 

 

 

 

 

사용

사용하는 방법은 profile 를 선택해서 실행하면 된다.

Jar

java -jar myapp.jar --spring.profiles.active=prod

 

인텔리J 

1. Run > Edit Configurations... 선택 

2. Spring Boot Application 선택

3. Active profiles 에서 원하는 profile 명을 입력 후 실행

 

참고