DB 정보를 분리하기 위해서 yml 설정을 해준다.
application.yml
spring:
profiles:
include: secret # 파일 인식
# active: dev # 파일 적용
datasource:
url: ${spring.datasource.url}
username: ${spring.datasource.username}
password:
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
format_sql: true
defer-datasource-initialization: true
sql:
init:
mode: always
logging:
level:
org.hibernate.SQL: debug
spring.profiles.active: 현재 실행 중인 애플리케이션에서 활성화할 프로파일을 지정한다. 지정된 프로파일의 설정만 활성화되며, 이를 통해 특정 환경(예: dev, prod, test)에 맞는 설정을 로드할 수 있다.
spring.profiles.include: s현재 활성화된 프로파일 외에 추가로 포함할 프로파일을 지정한다. 주로 여러 환경에서 공통으로 사용되는 설정을 로드하기 위해 사용된다.
application-secret.yml
spring:
datasource:
url: DB_url입력
username: DB_username 입력
password: DB_password 입력
Secret 파일 내에서는 DB URL, Username, Password, AWS KEYS와 같은 민감한 정보를 담아준다.
운영(Prod) 환경에서 민감한 정보의 설정이 달라진다면, 아래와 같은 방법을 사용한다.
application-secret-prod.yml 파일을 새로 생성하고 운영 환경에 필요한 민감한 정보를 작성한다. prod 상태라면 application.yml 파일의 profiles.include를 secret-prod로 변경한다.
application-prod.yml에 운영 환경에 필요한 민감한 정보를 적는다. dev, prod 프로필(profiles.active)은 secret 프로필의 설정들(profiles.include) 보다 우선순위가 높기 때문에 prod에 적은값이 우선 적용된다.. 이때, .ignore 파일에 application-prod.yml을 추가해서 민감 정보가 github에 올라가지 않도록 해준다.
### secret 파일 ###
/src/main/resources/application-secret.yml
만약 CI/CD를 사용한다면, Github의 Secrets을 이용해서 민감한 정보를 관리할 수 있다.