node.js 讀取電腦上的環境變數

太棒了,我們現在就把這套流程跑通。這是一個非常實務的作法:先建立一個能讀取環境變數的 Node.js 伺服器,這能確保未來你在 Azure App Service 設定資料庫連線字串(Connection String)時,程式碼不需要重新打包就能直接讀取。

請按照以下步驟完成設定:

1. 修改 server.js 加入環境變數測試

我們在 server.js 中加入一個簡單的 API 路徑,用來確認 Node.js 是否能讀取到系統環境變數。

JavaScript

const express = require('express');
const path = require('path');
const app = express();
// Azure App Service 預設會使用 PORT 環境變數,本機測試建議用 8080
const port = process.env.PORT || 8080;

app.use(express.static(path.join(__dirname, 'dist')));

// 未來這就是你連線 Azure SQL 的地方
app.get('/api/config-test', (req, res) => {
    res.json({
        message: "環境變數讀取測試",
        // 模擬未來的資料庫名稱,如果沒設定就顯示 '未設定'
        dbName: process.env.DB_NAME || "未設定",
        status: "Server is running"
    });
});

app.get('*', (req, res) => {
    res.sendFile(path.join(__dirname, 'dist', 'index.html'));
});

app.listen(port, () => {
    console.log(`Node Server 正在執行中:http://localhost:${port}`);
});

2. 在 Local Docker 驗證環境變數

打包映像檔(如果你已經改過 Dockerfile,請重新執行 build):

PowerShell

docker build -t policy-app-node .

在啟動容器時,我們可以用 -e 參數傳入環境變數,模擬 Azure 的設定:

PowerShell

docker run -d -p 8080:8080 --name my-running-app -e DB_NAME="MyAzureSQL" policy-app-node

3. 如何驗證是否成功?

  1. 打開瀏覽器訪問 http://localhost:8080/api/config-test
  2. 你應該會看到 JSON 內容:{"message":"環境變數讀取測試","dbName":"MyAzureSQL","status":"Server is running"}
  3. 如果 dbName 顯示 MyAzureSQL,代表你的 Docker 容器已經具備「從外部讀取設定」的能力。

4. 未來對接到 Azure SQL 的邏輯

當你準備好要寫資料庫邏輯時,只需要在 server.js 加入 mssql 套件,並利用 process.env.DB_SERVER 等變數即可。

JavaScript

// 未來的資料庫連線設定範例
const sqlConfig = {
    server: process.env.DB_SERVER, 
    database: process.env.DB_NAME,
    authentication: {
        type: 'azure-active-directory-default' // 這就是我們一開始提到的受控識別
    },
    options: { encrypt: true }
};

下一步建議

既然 Local 驗證已經通過(可以看到網頁也能讀到環境變數),你是否想要嘗試將這個 Image 推送到 Azure Container Registry (ACR)?這是將容器部署到 Azure App Service 的最後一哩路。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *