본문 바로가기

Spring

[KEUPANG] .env 파일 생성

이전 페이지: eureka-client 설정
다음 페이지: gateway 생성

개요

  • 작업을 하다보니 security 계정 정보가 application.yml에 담겨 있어서 admin 으로 모두 수정해서 보여줘야하는 번거러움이 있었음
  • 또한 github 에도 해당 정보가 담겨서 들어가니 문제가 있다고 판단함.
  • 보통 .env 파일에 만들어서 gitignore에 .env을 포함하는 방법을 사용한다고 하여 .env 파일을 생성하게 됨. 

.env 파일 생성

  • 사실 이전에 config server 에서 비밀키 관리 할때 .env를 생성한 적이 있음. -> https://back-jong.tistory.com/12 
    • 한번 더 설명 하자면 .env 파일은 다른 서비스 프로젝트들 모두 담고 있는 루트 프로젝트안에 생성하면 됨
  • 이름은 그냥 .env가 전부임
private_key = "LmRQzVR ~ ••• ~ 0tLS0K"
security_username = "admin"
security_password = "admin"
  • 이렇게 키-값 형태로만 저장이 가능함.
  • 예전에 추가해둔 private_key 밑에 security_username과 security_password를 추가함
  • 필자는 귀찮아서 admin 권한이 필요한 곳에 모두 같은 암호를 걸어서 해당 암호만 사용함(물론 위에 써둔건 예시임)

Dotenv 로 .env 파일 읽기

@SpringBootApplication
@EnableDiscoveryClient
public class KeupangUserApplication {

    public static void main(String[] args) {
        Dotenv dotenv = Dotenv.configure().directory("./")  // .env 파일 경로 설정
            .load();

        System.setProperty("security_username", dotenv.get("security_username"));
        System.setProperty("security_password", dotenv.get("security_password"));
        SpringApplication.run(KeupangUserApplication.class, args);
    }

}
  • 주의할 점 docker 사용하는 분들은 다음 링크 참고 -> (예정)
  • Dontenv.configure().directory("./").load(); 이부분을 보면 신기한점 있음.
    • keupang -> keupang-user -> ••• ->  KeupangUserApplication 이런 구조인데 KeupangUserApplication에서 './' 하면 자동으로 제일 최상단인 keupang으로 가서 './'으로 들어가고 그 안에 있는 .env를 찾아줌.
  • 읽기를 성공하면 system에 키,값 형태로 속성 추가해줌

application.yml 수정

spring:
    application:
        name: user
    profiles:
        active: dev
    config:
        import: optional:configserver:http://admin:admin@eureka-server:9000

이런 식으로 security 설정된 곳에 접근할 때 username, password을 추가한 부분을 아래와 같이 수정해야함.

spring:
    application:
        name: user
    profiles:
        active: dev
    config:
        import: optional:configserver:http://${security_username}:${security_password}@eureka-server:9000

이렇게 하면 system에 추가한 속성으로 부터 값을 가져옴