avatar
BrightDawn

Spring boot에서 환경변수 설정이 필요한 경우

Spring boot에서 환경변수를 넣었는데 .env가 인식이 안될 때
6 months ago
·
3 min read

GitHub에도 올라가면 안 되는 내용

주로 DB 주소나 사용자명이나 비밀번호 등이 거기에 해당할 것이다.

내가 로컬에서만 작동하는 DB를 사용한다면 별 상관 없지만 DB를 서버에 올려놓는다면 이야기가 달라진다. 누군가는 해당 서버 주소를 통해서 유출된 사용자 명과 비밀번호를 가지고 접속할 수 있다는 이야기가 된다.

.env 파일

주로 환경 변수 설정을 위해서 사용하는 파일로, 이곳에 내가 사용하는 DB의 주소, 사용자명, 비밀번호를 적어둔다.

RDS_ENDPOINT=엔드포인트
RDS_USERNAME=사용자명
RDS_PASSWORD=비밀번호

application.properties

원래 DB 등의 연결, 설정을 위해 사용하는 파일로 로컬에서 DB를 사용할 경우 이곳에 직접적으로 정보를 기재해두었을 것이다.

아래는 MYSQL 기준의 application.properties 파일이다.

spring.config.import=optional:file:./config/.env[.properties]
spring.config.additional-location=classpath:/,classpath:/config/,file:./,file:./config/

spring.application.name=프로젝트명

# DB
spring.datasource.url=jdbc:mysql://${RDS_ENDPOINT}:3306/DB이름
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=${RDS_USERNAME}
spring.datasource.password=${RDS_PASSWORD}

여기서 중요한 것은 .env 뒤에 붙어있는 [.properties] 이 부분이다.

.env를 그냥 사용한 경우가 많고, 내가 세팅하는 부분이 아니기 때문에 간과하게 되는데 [.properties]를 넣어주어야 인식이 된다.

넣지 않아도 인식이 되는지는 모르겠다. 안 되니까 넣은 거라서...

가장 중요한 Git에 올리지 않기.

저걸 다 설정해놓고 그대로 commit - push 해버리면 깃허브에 공유 되어 결국 만천하에 공개된다.

이를 방지하기 위해서 .ignore 파일에 설정을 넣어두도록 하자.

/config/

해당 내용을 추가해주었다.

인텔리제이라면 아래와 같이 비주얼 환경에서 그대로 해주면 쉽다.

until-720