웹 개발
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 에서 실행하고자 할 때는 다음과 같이 하면 됩니다.
- Run > Edit Configurations... 선택
- Spring Boot Application 선택
- Active profiles 에서 원하는 profile 명을 입력 후 실행
728x90
반응형