보통 데이터베이스, 포트 등 로컬에서 개발할 때와 실제 서비스 환경에서 사용할 때 설정을 달리 한다.
Spring Boot에서는 application.yml 파일에서 이런 내용을 관리하는데, 분리 설정은 아주 간단하다.
방법은 크게 두 가지가 있는데, 나는 하나의 파일에서 관리하는 2번 방식을 선택했다. 서비스 규모가 크지 않기 때문에 내용이 많지 않아 하나의 파일에서 설정하는게 더 편할 것 같기 때문이다.
1. resources/application-{환경변수}.yml + application.yml (default) 형식으로 환경별로 설정 파일을 생성
2. resource/application.yml 하나의 파일에서 '---' 구분자로 구분
1. application.yml 파일 수정
spring:
profiles:
group:
local: default,local
prod: default,prod
mail:
host: smtp.gmail.com
port: 587
username: {username}
password: {password}
properties:
mail:
smtp:
auth: true
starttls.enable: true
jwt:
expiration-hours-access: 2
expiration-days-refresh: 14
secret-key: {secret_key}
server:
servlet:
encoding:
charset: UTF-8
enabled: true
force: true
---
spring:
config:
activate:
on-profile: local
jpa:
show-sql: true
properties:
hibernate:
format_sql: true
defer-datasource-initialization: true
datasource:
url: jdbc:h2:mem:testdb
h2:
console:
enabled: true
---
spring:
config:
activate:
on-profile: prod
jpa:
properties:
hibernate:
format_sql: true
dialect: org.hibernate.dialect.MySQLDialect
defer-datasource-initialization: true
datasource:
url: jdbc:mariadb://{db_host}:3306/{db_name}
driver-class-name: org.mariadb.jdbc.Driver
username: {username}
password: {password}
- "---" 구분자를 통해 공통 적용 영역, local, prod 을 각각 구분한다.
- 가장 윗 칸은 모든 환경에 공통으로 적용하는 부분이다.
- 각 환경별로(prod, local) spring.profiles.group.local, prod 를 추가해 공통 설정 부분을 항상 포함시키도록 한다.
2. 실행 커맨드
local 환경에서 실행할 경우, 아래 커맨드를 실행하면 된다.
java -jar -Dspring.profiles.active=local target/{your-app-name}.jar
Run/Debug Configuration 설정 추가
그리고 나는 주로 local에서 IntelliJ 에서 실행하기 때문에, Run/Debug Configuration 에 설정을 추가해주어야 한다.
(지금 default로 local 버전을 지정했기에 필수는 아니지만, 로컬에서 다른 환경으로 테스트할 때 참고하기 위해 미리 찾아봤다)
3. start.sh 파일 수정
기존 파일(start.sh) 에서 -Dspring.profiles.active=prod 을 실행 커맨드 중간에 추가해준다.
수정된 파일로 재시작 완료!
반응형
'Study > GW' 카테고리의 다른 글
[AWS] 에러해결 - 인스턴스 연결성 검사 실패, 메모리 부족 (0) | 2024.06.13 |
---|---|
[AWS, Spring Boot3] EC2 배포, 서버 스크립트, Nginx 설치 (0) | 2024.06.11 |
[Spring Boot3] SSH 터널링 설정 (EC2 > RDS 데이터베이스) (0) | 2024.06.10 |
[AWS] 프리티어 EC2 생성, EC2-RDS 연결, DataGrip SSH 연결 (0) | 2024.06.05 |
[AWS] RDS Free Tier 과금 해결 (0) | 2024.06.05 |