[Node] dotenv로 환경 변수 관리
환경 변수란?
우리는 보통 개발을 하고 난 후 여러 환경에 배포를 하게 된다. 어느 환경에 배포하느냐에 따라 다르게 설정해야하는 것은 환경 변수를 통해 관리하게 된다.
예를 들어 개발 환경에서는 로컬 DB를 사용하고, 운영 환경에서는 원격 DB를 사용하는 경우가 있다. 또한 데이터 베이스 비밀번호나 인증에 관련된 정보를 Git과 같이 공개 된 곳에 올리면 안되기 때문에 환경 변수로 저장해놓고 사용하는 것이 일반적이다.
dotenv란?
Dotenv is a zero-dependency module that loads environment variables from a .env file into process.env. 출처 : dotenv 공식문서
dotenv는 process.env
로 환경 변수를 로드하는 제로 종속성 모듈이다. 즉, 다시 말해 dotenv의 환경 변수를 .env
파일에 저장해 관리하는 것이다. dotenv를 사용하는 이유는 서버주소, API KEY등 보안과 관련된 중요한 사항들을 오픈소스에 공개될 경우, 보안적인 면에서 상당히 취약할 수 있기 때문이다.
dotenv 설치
dotenv를 사용하기 앞서 npm install dotenv
로 의존성을 설치해주어야 한다.
dotenv 사용 예시
dotenv를 사용하기 위해서는 root
경로에 .env
파일을 하나 생성하여 이름 = 값
형식으로 작성해준다.
# .env 파일
DB_HOST="[RDS_DB_키]"
DB_USER="[DB_관리자]"
DB_PASSWORD="[DB_비밀번호]"
DB_DATABASE="[DB_이름]"
app.js
파일에서 dotenv를 불러오면 dotenv.config()
로 환경 변수를 세팅한다.
# app.js
const dotenv = require('dotenv');
dotenv.config();
process.env
를 통해 .env
파일 안에 등록 된 환경 변수에 접근 할 수 있다.
# db.js
const mysql = require('mysql');
const db = mysql.createConnection({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
});
db.connect();
module.exports = db;
주의사항
.env
파일에 환경 변수를 등록하고 보안에 신경을 썼다 할지라도 .gitignore
파일에 등록해주지 않으면 환경 변수를 사용한 이유가 없어진다. 그렇기 때문에 .gitignore
파일에 .env
파일을 등록시켜 오픈소스에 올라가지 않게 해주어야 한다.
# .gitignore
.env
Reference
https://www.daleseo.com/js-dotenv/
https://www.daleseo.com/js-node-process-env/
https://velog.io/@reveloper-1311/DB-Node.js%EC%97%90%EC%84%9C-%ED%99%98%EA%B2%BD%EB%B3%80%EC%88%98-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0dotenv
https://www.npmjs.com/package/dotenv