返回
Featured image of post NodeJS - 環境變數

NodeJS - 環境變數

引用環境變數,dotenv/config,在各個環境中替換不同的環境變數

在不同的環境運行下,會有不同的資料庫/不同的網址/不同的連線帳密/廠商測試或正式網址,進行設定檔切換系統連線字串。


專案練習:

express-example         - 專案名稱
|- node_modules         - node 套件資料夾
|- config/
    |-config.dev.json   - 使用 `config` 套件
    |-config.prod.json  - 使用 `config` 套件
|- index.js
|- .env.dev             - 使用 `dotenv` 套件
|- .env.prod            - 使用 `dotenv` 套件
|- package.json         - npm 操作之Json檔案
|- package-lock.json    - npm 相依套件之位置

基本使用

index.js修改成

console.log(process.env.KEY)

package.json中的scripts修改成

"scripts":{
       "start": "KEY=HelloWorld node ./index.js"
}

在這個專案下面終端機介面輸入

npm run start
Hello World.

dotenv v8.2.0

dotenv
dotenv

  "scripts": {
    "dev": "node -r dotenv/config index.js dotenv_config_path=.env.dev", // 指定file `.env.dev`
    "prod": "node -r dotenv/config index.js" // 預設的file `.env`
  },

.env.dev

KEY=Dev dotenv

.env

KEY=Prod dotenv

index.js

console.log(process.env.KEY)

運行npm run dev/npm run prod查看不同。

config v3.3.1

config
config

  "scripts": {
    "dev": "NODE_ENV=dev node index2.js", // 指定file `.env.dev`
    "prod": "node index.js" // 預設的file `.env`
  },

config/dev.json

{
    "KEY":"Dev config"
}

config/default.json

{
    "KEY":"Prod config"
}

index.js

var config = require('config');
var KEY = config.get('KEY');
console.log(KEY)

運行npm run dev/npm run prod查看不同。


Node Dockerfile

FROM node:lts
WORKDIR /app
COPY package* /app/
RUN npm install

FROM node:lts-alpine
WORKDIR /app
COPY --from=0 /app/ /app/
COPY . /app/
EXPOSE 3001
CMD [ "npm", "run", "prod" ]

小結

devprod兩個環境,在Docker容器化後的攥寫,這樣的環境分類只有本地使用線上使用,那多一個環境呢?有什麼簡單的方式呢?

  • 需熟悉Dockerfile撰寫改寫流程。
  • 若有使用 Kubernates 可使用 ConfigMap 替換。

關於環境變數有很多特別的用法,算是一種服務託管的資料去做替換使用。
非常多的使用時機,可以花一點時間了解。

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus