컴공생의 다이어리
[스프링 부트, 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가지가 있다.
- 하나의 파일 안에서 환경 분리
- 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
728x90
'Development > Spring & SpringBoot' 카테고리의 다른 글
[스프링 부트, Spring Boot] @Profile, @ActiveProfiles (0) | 2024.01.15 |
---|---|
[스프링 부트, Spring Boot] 테스트 실행환경 분리 (0) | 2023.09.30 |
[스프링 부트, Spring Boot] 슬랙(Slack) webhook으로 메세지 보내기 (0) | 2023.06.10 |
[MyBatis] parameterType, resultType에 내부 클래스(inner class) 사용 (0) | 2023.04.30 |
[스프링 부트, Spring Boot] 배너 커스텀 및 적용 (0) | 2022.06.22 |
Comments