방명록
- [개발자의품격][부트캠프][1기][31차시] Node.js #4 | dotenv로 민감정보 깃허브에 푸시되지 않게 | cross-env로 개발 DB와 운영 DB를 분리 관리2022년 04월 08일 16시 54분 57초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
| dotenv
아래 코드는 민감정보를 포함하고 있어 깃허브에 올라가면 안 된다. dotenv 모듈을 이용하면 민감정보를 감출 수 있다.
// mysql/index.js ... const pool = mysql.createPool({ host: "localhost", port: 3306, user: "dev", password: "1234", database: "dev", connectionLimit: 10, }); ...
dotenv 모듈 설치
npm i dotenv
.env 파일에 민감 정보들이 있다. .gitignore에 이 파일을 포함시키면 된다.
// mysql/.env MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USERNAME=dev MYSQL_PASSWORD=1234 MYSQL_DB=dev MYSQL_LIMIT=10
// mysql/index.js ... const pool = mysql.createPool({ host: process.env.MYSQL_HOST, port: process.env.MYSQL_PORT, user: process.env.MYSQL_USERNAME, password: process.env.MYSQL_PASSWORD, database: process.env.MYSQL_DB, connectionLimit: process.env.MYSQL_LIMIT, }); ...
// 11_app_mysql.js ... require("dotenv").config({ path: "mysql/.env" }); // 반드시 "const mysql = require("./mysql");" 코드 위에 작성해야 한다. const mysql = require("./mysql");
| cross-env
실무에서는 app.js 파일 하나로 서버를 생성하여 "npm run..." 명령어로 실행한다.
실무에서 개발한 서버를 운영서버에 이관하면 개발 시 사용하는 DB 계정과 운영시 사용하는 DB 계정이 다르다. cross-env로 환경을 간편하게 변경할 수 있다.
cross-env 모듈 설치(https://www.npmjs.com/package/cross-env) ※ 윈도우 환경에서는 이 모듈을 설치해야 한다.
npm install --save-dev cross-env
// package.json { ... "scripts": { "test": "cross-env NODE_ENV=test node 11_app_mysql.js", "prod": "cross-env NODE_ENV=prod node 11_app_mysql.js" }, ...
// 11_app_mysql.js ... console.log(app.get("env")); ...
위에서 cross-env가 잘 기능하는 것을 확인했다. 실무에서는 다음과 같이 설정하여 DB접속 환경을 유연한다.
아래와 같이 두개의 DB접속 정보가 있다. (실무에서는 이 보다 더 많을 수도 있다.)
// mysql/.envtest MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USERNAME=dev MYSQL_PASSWORD=1234 MYSQL_DB=dev MYSQL_LIMIT=10
// mysql/.envprod MYSQL_HOST=127.0.12.32 MYSQL_PORT=3306 MYSQL_USERNAME=admin MYSQL_PASSWORD=admin1234 MYSQL_DB=dev MYSQL_LIMIT=10
"require("dotenv")..." 부분을 다음과 같이 수정한다.
// 11_app_mysql.js ... require("dotenv").config({ path: `mysql/.env.${app.get("env")}` }); // 반드시 "const mysql = require("./mysql");" 코드 위에 작성해야 한다. ...
728x90반응형'영광의 시대! > 2022 개발자의 품격 부트캠프 1기' 카테고리의 다른 글
다음글이 없습니다.이전글이 없습니다.댓글