• Feed
  • Explore
  • Ranking
/

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

    Spring boot에서 환경변수를 넣었는데 .env가 인식이 안될 때
    다
    다뉴기
    2024.07.05
    ·
    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