웹 개발

Spring boot profile 환경별로 설정하는 방법(yaml).

노루아부지 2022. 5. 1. 18:26

spring boot는 환경 설정을 application.properties 또는 application.yml로 설정합니다.

한편, 개발을 하다 보면 로컬 서버, 개발서버, 운영서버 등에서 프로그램을 실행해야 하는데 매번 이 설정 파일을 수정하는 건 번거롭습니다. 특히 운영서버에서 설정을 바꾸다 잘못되면 심각한 문제가 발생하기도 합니다.

 

이때, yml의 경우 다음과 같이 파일 내에서 구분자(---)와 profiles 옵션으로 간단하게 처리할 수 있습니다.

# local, dev, prod 공통 설정
server:
  port: 8080

---

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

---

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


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

 

단, spring.profiles 옵션은 spring boot 2.4부터 deprecated 되었습니다.

대신 spring.profiles.group 옵션이 추가되었습니다.

사용방법은 다음과 같이 group을 설정한 후에 jar를 실행할 때 profile을 선택해서 실행하면 됩니다.

spring:
  profiles:
    group:
      "local": "local_db,common"
      "dev":  "dev_db,common"
      "prod": "prod_db,common"

---

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

# local, dev, prod 공통 설정
server:
  port: 8080

---

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

---

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


---
spring:
  config:
    activate:
      on-profile: prod_db
  datasource:
    url: "jdbc:mysql://prod-server/prod"
    username: "proddbuser"
    password: "proddbpass"

 

아래와 같이 prod로 실행하게 되면 prod 그룹인 prod_db와 common 두개의 프로파일들을 한번에 실행할 수 있습니다.

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

 

 

만약 intellij 에서 실행하고자 할 때는 다음과 같이 하면 됩니다.

  1. Run > Edit Configurations... 선택
  2. Spring Boot Application 선택
  3. Active profiles 에서 원하는 profile 명을 입력 후 실행
728x90
loading