[MySQL] NODE_ENV를 이용해 dev,test,prod 데이터베이스 사용하기
1. config/config.js 코드 변경
const dotenv = require('dotenv');
dotenv.config();
module.exports = {
development : {
host:process.env.MYSQL_HOST,
username: process.env.MYSQL_USERNAME,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE_DEV, // development용 db 사용
dialect: "mysql",
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
}
},
test : {
host:process.env.MYSQL_HOST,
username: process.env.MYSQL_USERNAME,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE_TEST, // test용 db 사용
dialect: "mysql",
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
}
},
production : {
host:process.env.MYSQL_HOST,
username: process.env.MYSQL_USERNAME,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE_PROD, // production용 db 사용
dialect: "mysql",
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
}
},
};
.env
.env에는 아래와 같이 설정되어있다.
MYSQL_DATABASE_DEV=dev-db
MYSQL_DATABASE_TEST=test-db
MYSQL_DATABASE_PROD=prod-db
2. models/index.js 코드 변경
const Sequelize = require("sequelize");
const env = process.env.NODE_ENV || 'development'; // process.env.NODE_ENV가 undefined라면 development로
const dbConfig = require("../config/config")[env];
const db = {};
const sequelize = new Sequelize(dbConfig.database, dbConfig.username, dbConfig.password, {
host: dbConfig.host,
dialect: dbConfig.dialect,
operatorsAliases: false,
pool: {
max: dbConfig.pool.max,
min: dbConfig.pool.min,
acquire: dbConfig.pool.acquire,
idle: dbConfig.pool.idle
},
logging: false,
});
. . .
3. npm script 변경
cross-env 설치
npm i cross-env
script 변경
"scripts": {
"dev": "nodemon app.js",
"test": "cross-env NODE_ENV=test mocha result.spec.js",
"start": "cross-env NODE_ENV=production node app.js"
},
4. migration
npx sequelize db:create --env development // dev-db 생성
npx sequelize db:create --env test // test-db 생성
npx sequelize db:create --env production // prod-db 생성
참고
💛 개인 공부 기록용 블로그입니다. 👻