본문 바로가기
Node.js

익스프레스 웹 서버 만들기 - dotenv

by Programmer.Junny 2025. 1. 15.

1. dotenv 란?

Node.js 환경에서 다양한 설정(예: DB 접속 정보, API key, 시크릿 키 등)을 안전하게 저장하고 쉽게 관리하기 위해 많이 사용되는 라이브러리이다. dotenv는 .env 파일에 작성된 환경 변수를 Node.js에서 사용할 수 있도록 해주는 역할을 한다.

 

  • 환경 변수(ENV) 로드: .env 파일에 작성된 키=값 형식의 환경 변수를 process.env 객체에 로딩해준다.
  • 보안적인 측면: 소스 코드에 직접 비밀번호나 API 키를 작성하기보다 .env 파일로 분리하여 관리하면, 주요 정보를 외부에 노출하는 실수를 줄일 수 있다.
  • 환경에 따른 설정: 개발 환경(개발/로컬, 스테이징, 프로덕션 등)마다 다른 .env 파일을 사용하면, 같은 코드를 여러 환경에서 유연하게 운영할 수 있다.

 

2. 설치

npm install dotenv

3. 코드 예시

📁 my-project
 ┣ 📜 app.js
 ┣ 📜 .env
 ┗ ...
# .env
PORT=3000
DB_HOST=localhost
DB_USER=myuser
DB_PASSWORD=secretpass
COOKIE_SECRET=myCookieSecret
require('dotenv').config(); // dotenv 불러오기
const express = require('express');

const app = express();

// process.env를 통해 .env에 기재된 환경 변수에 접근 가능
const port = process.env.PORT || 8080; // 기본값 8080
const dbHost = process.env.DB_HOST;
const dbUser = process.env.DB_USER;
const dbPass = process.env.DB_PASSWORD;

app.get('/', (req, res) => {
  res.send(`
    <h1>dotenv 테스트</h1>
    <p>포트번호: ${port}</p>
    <p>DB 정보: ${dbHost}, ${dbUser}</p>
  `);
});

app.listen(port, () => {
  console.log(`${port} 번 포트에서 서버가 시작되었습니다!`);
});

4. 주의 사항

 

  • .env 파일은 절대 소스코드 저장소(Git 등)에 올리지 않아야 한다.
    • 민감 정보 노출 위험이 있고, 제3자에게 손쉽게 유출될 수 있기 때문이다.
    • .gitignore에 .env를 추가해 커밋되지 않도록 설정해야 한다.
  • 프로덕션 환경에서는 다른 방식의 환경 변수 관리를 고려할 수 있다.
    • 예: AWS Parameter Store, Kubernetes Secret, Docker ENV 등 다양한 방법으로 환경 변수를 주입한다.
    • CI/CD 파이프라인에서 .env를 동적으로 생성하거나 필요한 변수를 직접 설정해 배포하는 방식도 있다.
  • dotenv는 개발/로컬 환경에서 사용하기 편리하다.
    • 초기 개발 단계에서 민감 정보를 코드에서 분리하고, 환경에 따라 달라지는 값들을 손쉽게 관리할 수 있다.
  • dotenv 패키지 로드 시점:
    • require('dotenv').config()를 가급적 코드의 최상단에서 한 번만 호출하는 것이 좋다.
    • 그래야 나머지 코드에서 process.env 사용 시 이미 환경 변수가 설정되어 있게 된다.

 

최근댓글

최근글

skin by © 2024 ttuttak