太棒了,我們現在就把這套流程跑通。這是一個非常實務的作法:先建立一個能讀取環境變數的 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. 如何驗證是否成功?
- 打開瀏覽器訪問
http://localhost:8080/api/config-test。 - 你應該會看到 JSON 內容:
{"message":"環境變數讀取測試","dbName":"MyAzureSQL","status":"Server is running"}。 - 如果
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 的最後一哩路。