容器中的 Node.js

在本指南中,您將學習如何:

  • Express Node.js 服務容器建立 Dockerfile 檔案
  • 建置、執行並驗證服務功能
  • 對容器內執行的服務進行偵錯

先決條件

  • 必須依照概觀中的說明安裝 Docker 以及 VS Code 容器工具 (Container Tools) 擴充功能
  • Node.js 10 或更新版本

建立 Express Node.js 應用程式

  1. 為專案建立一個資料夾。

  2. 在專案資料夾中開啟開發命令提示字元並建立專案

    npx express-generator
    npm install
    

將 Docker 檔案加入專案

  1. 在 VS Code 中開啟該專案資料夾。

  2. 開啟命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 並使用 Containers: Add Docker Files to Workspace... 命令

    Add Dockerfile to a Node.js project

  3. 當提示選擇應用程式平台時,請選擇 Node.js

  4. 選擇預設的 package.json 檔案。

  5. 當提示輸入應用程式連接埠時,輸入 3000

  6. 當提示是否包含 Docker Compose 檔案時,請選擇 YesNo。Compose 通常用於同時執行多個容器的情況。

該擴充功能會建立 Dockerfile.dockerignore 檔案。若您選擇包含 Docker Compose 檔案,則也會產生 docker-compose.ymldocker-compose.debug.yml。最後,擴充功能會在 .vscode/tasks.json 中建立一組 VS Code 工作 (Tasks) 用於建置與執行容器(包含偵錯與發行設定),並在 .vscode/launch.json 中建立一個 啟動偵錯設定,用於在容器內對服務進行偵錯。

將環境變數加入映像檔

容器工具擴充功能透過使用 IntelliSense 提供自動完成與上下文協助,協助您撰寫 Dockerfile。若要體驗此功能,請按照下列步驟將環境變數加入服務映像檔:

  1. 開啟 Dockerfile 檔案。

  2. 使用 ENV 指令將環境變數加入服務容器映像檔。

    Add an environment variable to Docker image

    請注意容器工具擴充功能如何列出所有可用的 Dockerfile 指令並描述其語法。

    容器工具擴充功能使用 Dockerfilebase 階段來建立服務容器映像檔的偵錯版本。將環境變數定義放在 base 階段中,即可讓此變數在容器映像檔的偵錯版本與發行版本中皆可使用。

  3. 儲存 Dockerfile 檔案。

於本機執行服務

  1. 開啟終端機 (⌃` (Windows, Linux Ctrl+`))。

  2. 輸入 npm run start 以啟動應用程式

    > express-app@0.0.0 start /Users/user/code/scratch/express-app
    > node ./bin/www
    
  3. 開啟網頁瀏覽器並前往 https://:3000。您應該會看到類似下方的頁面

    Application page in browser

  4. 測試完成後,在終端機中輸入 Ctrl+C

建置服務映像檔

  1. 開啟命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 並選擇 Container Images: Build Image... 命令。

  2. 開啟容器總管 (Container Explorer) 並確認新映像檔已顯示在 Images 檢視中

    Verify Docker image exists

執行服務容器

  1. 在上一節中建置的映像檔上按右鍵,並選擇 RunRun Interactive。容器應該會啟動,且您應該能在 Containers 檢視中看到它

    Running service container

  2. 開啟網頁瀏覽器並前往 https://:3000。您應該會看到類似下方的頁面

    Application page in browser

  3. 測試完成後,在 Containers 檢視中對該容器按右鍵並選擇 Stop

於服務容器中進行偵錯

當容器工具擴充功能將檔案加入應用程式時,它也會在 .vscode/launch.json 中加入 VS Code 偵錯器設定,用於在容器內執行時對服務進行偵錯。擴充功能會偵測服務所使用的協定與連接埠,並將瀏覽器導向該服務。

  1. routes/index.js 中,為 '/' 路由的 get() 處理常式設定中斷點。

  2. 確保已選取 Containers: Node.js Launch 偵錯器設定。

    Selected debug configuration

  3. 開始偵錯(使用 F5 鍵)。

    • 建置服務的映像檔。
    • 執行服務的容器。
    • 瀏覽器會開啟並連接至對應到服務容器的(隨機)連接埠。
    • 偵錯器會在 index.js 的中斷點處停止。

    請注意,由於偵錯器是在應用程式啟動「之後」才附加,因此第一次執行時可能會錯過中斷點;您可能需要重新整理瀏覽器,才能在第二次嘗試時看到偵錯器中斷。

    您可以透過設定 tasks.jsonnode 物件下的 docker-run: debug 工作的 inspectMode 屬性為 break,來設定應用程式在開始執行前等待偵錯器附加。

檢視應用程式日誌

您可以使用容器上的 View Logs 命令在 VS Code 中檢視日誌

  1. 前往容器總管。

  2. Containers 檢視中,對您的容器按右鍵並選擇 View Logs

    Screenshot of logs in the terminal

  3. 輸出內容將會顯示在終端機中。

後續步驟

完成!現在容器已準備就緒,您可能想要:

© . This site is unofficial and not affiliated with Microsoft.