개발환경과 배포환경에서 비밀정보 관리하기 - nhnacademy-be10-WannaB/wannab-wiki GitHub Wiki

1. resources/properties 폴더에 env.properties 파일 만들기

  • 예시
EUREKA_USERNAME=wannab
EUREKA_PASSWORD=nhnteam05

ADMIN_NAME=wannab
ADMIN_PASSWORD=nhnteam05

2. application.yml 에서 해당 설정 파일을 참조해서 사용하기

spring:
  application:
    name: eureka
  profiles:
    active: peer1
  lifecycle:
    timeout-per-shutdown-phase: 15s
  config:
    import: optional:classpath:properties/env.properties
  security:
    user:
      name: ${ADMIN_NAME}
      password: ${ADMIN_PASSWORD}

server:
  shutdown: graceful

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false

---
spring:
  config:
    activate:
      on-profile: peer1

server:
  port: 10380

eureka:
  client:
    service-url:
      defaultZone: http://${EUREKA_USERNAME}:${EUREKA_PASSWORD}@220.67.216.11:10381/eureka
  instance:
    hostname: eureka-peer1

---
spring:
  config:
    activate:
      on-profile: peer2

server:
  port: 10381

eureka:
  client:
    service-url:
      defaultZone: http://${EUREKA_USERNAME}:${EUREKA_PASSWORD}@220.67.216.11:10380/eureka
  instance:
    hostname: eureka-peer2

참조하는 방법 : spring.config.import로 해당 파일 참조하기

spring:
  config:
    import: optional:classpath:properties/env.properties
  • 이런식으로

그 이후 ${} 이렇게 해서 변수 사용하기

    user:
      name: ${ADMIN_NAME}
      password: ${ADMIN_PASSWORD}
eureka:
  client:
    service-url:
      defaultZone: http://${EUREKA_USERNAME}:${EUREKA_PASSWORD}@220.67.216.11:10380/eureka
  • 이런식으로 사용하기

그 다음 gitignore에 등록하기

# 설정 파일
src/main/resources/properties/*.properties

근데 꼭 이렇게 안하고 다른 방법도 있어요

application-dev.yml 는

spring:
  application:
    name: eureka
  profiles:
    active: peer1
  lifecycle:
    timeout-per-shutdown-phase: 30s
  config:
    import: optional:classpath:properties/env.properties
  • 이렇게만 들어가고

application-prod.yml은

spring:
  security:
    user:
      name: 진짜 관리자 아이디
      password: 진짜 관리자 비번
  • 이렇게 하고 dev만 git에 올려서 사용하면 됩니당