Development/썬카(SunCar) - 개인 프로젝트

[썬카/백엔드] dotenv를 사용한 중요 데이터 환경변수화

양선규 2025. 3. 22. 17:09
728x90
반응형
# application.properties

spring.application.name=suncar

# DB
spring.datasource.url=jdbc:mysql://localhost:3307/suncar
spring.datasource.username=root
spring.datasource.password=0000
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

# JWT
jwt.secret=BTpHjyFDurb0PefLrKP+e4vKKwNCw+rUoMEpQjde7T6EzB9QjtoqC7MFVcHwbFPr+r4/OlR9ZiB5rpG0axOd4Q==
jwt.expiration=86400000

 

위와 같이, 기존엔 데이터베이스 접속정보와 JWT 정보를 application.properties 파일에 직접 명시해 놓고 사용했었다.

하지만 이런 중요정보가 Git에 함께 올라갈 경우 보안적인 문제가 크기 때문에 환경변수를 이용해 별도로 관리할 필요가 있다.

 

따라서 dotenv를 사용해 중요정보가 노출되지 않도록 수정하기로 했다.

 

 

1. dotenv 의존성 추가

// build.gradle

dependencies {
	// 생략..
	implementation 'me.paulschwarz:spring-dotenv:3.0.0'
        // 생략..
}

 

build.gradle 파일에 dotenv 의존성을 추가한 후 코끼리 모양 버튼을 눌러 빌드한다.

 

2. .env 작성

# .env

# local DB
DB_URL=jdbc:mysql://localhost:3307/suncar
DB_USERNAME=root
DB_PASSWORD=0000

# JWT
JWT_SECRET=BTpHjyFDurb0PefLrKP+e4vKKwNCw+rUoMEpQjde7T6EzB9QjtoqC7MFVcHwbFPr+r4/OlR9ZiB5rpG0axOd4Q==
JWT_EXPIRATION=86400000

 

프로젝트 루트 디렉터리에 .env 파일을 만든다.

.env라는 이름은 환경변수를 관리하는 파일명으로 통용되는 이름이다.

 

이 파일에 실제 중요 정보들을 담아둔다.

상수처럼 대문자와 언더바로만 작성하되, 따옴표나 공백 없이 값만 작성하면 된다.

 

3. application.properties 수정

# application.properties

spring.application.name=suncar

# DB
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

# JWT
jwt.secret=${JWT_SECRET}
jwt.expiration=${JWT_EXPIRATION}

 

이제 환경변수를 사용할 준비를 완료했으니, 사용하기만 하면 된다.

application.properties 로 돌아가 위와 같이 환경변수를 불러온다. ${변수명} 형태로 사용하면 된다.

 

이렇게만 하면 환경변수를 사용하는 건 끝났다.

 

4. .gitignore 설정

# .gitignore

# 생략 ...
.env

 

하지만 환경변수로 중요 데이터를 관리한다고 한들 그 환경변수 파일마저 Git에 올려버리면 소용이 없다.

따라서 .gitignore에 .env를 추가함으로써 Git에 올라가지 않도록 설정해 두자.

 

만약 이미 Git이 .env 파일을 추적하고 있다면, git rm --cashed .env 명령어로 추적을 멈춰줘야 한다.

 

완성된 application.properties

 

 

=============

 

728x90
반응형