🚀 在 VS Code 中

容器中的 Node.js

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

  • Express Node.js 服務容器建立 Dockerfile 檔案
  • 建置、執行及驗證服務的功能
  • 偵錯在容器中執行的服務

先決條件

  • 必須安裝 Docker 和 VS Code Docker 擴充功能,如概觀中所述
  • Node.js 10 或更新版本

建立 Express Node.js 應用程式

  1. 為專案建立資料夾。

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

    npx express-generator
    npm install
    

將 Docker 檔案新增至專案

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

  2. 開啟命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 並使用 **Docker: 將 Docker 檔案新增至工作區...** 命令

    Add Dockerfile to a Node.js project

  3. 當提示輸入應用程式平台時,選取 **Node.js**。

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

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

  6. 當提示是否包含 Docker Compose 檔案時,選取 **是** 或 **否**。Compose 通常在一次執行多個容器時使用。

此擴充功能會建立 Dockerfile.dockerignore 檔案。如果您選擇包含 Docker Compose 檔案,也會產生 docker-compose.ymldocker-compose.debug.yml。最後,此擴充功能會在 .vscode/tasks.json 中建立一組 **VS Code 工作**,用於建置和執行容器 (在偵錯和發行組態中),並在 .vscode/launch.json 中建立啟動偵錯組態,用於偵錯容器內的服務。

將環境變數新增至映像

Docker 擴充功能透過使用 IntelliSense 提供自動完成和上下文說明,協助您撰寫 Dockerfile。若要查看此功能的實際運作,請按照下列步驟將環境變數新增至您的服務映像

  1. 開啟 Dockerfile 檔案。

  2. 使用 ENV 指令將環境變數新增至服務容器映像。

    Add an environment variable to Docker image

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

    Docker 擴充功能使用 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. 開啟網頁瀏覽器並導覽至 http://localhost:3000。您應該會看到類似以下的頁面

    Application page in browser

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

建置服務映像

  1. 開啟命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 並選取 **Docker 映像: 建置映像...** 命令。

  2. 開啟 Docker Explorer,並確認新的映像在映像樹狀結構中可見

    Verify Docker image exists

執行服務容器

  1. 在先前章節中建置的映像上按一下滑鼠右鍵,然後選取 **執行** 或 **互動式執行**。容器應會啟動,而且您應該能夠在 Docker 容器樹狀結構中看到它

    Running service container

  2. 開啟網頁瀏覽器並導覽至 http://localhost:3000。您應該會看到類似以下的頁面

    Application page in browser

  3. 完成測試後,在容器樹狀結構中按一下滑鼠右鍵,然後選取 **停止**。

在服務容器中偵錯

當 Docker 擴充功能將檔案新增至應用程式時,它也會在 .vscode/launch.json 中新增 VS Code 偵錯工具組態,以便在容器內執行時偵錯服務。此擴充功能會偵測服務使用的通訊協定和連接埠,並將瀏覽器指向服務。

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

  2. 確定已選取 **Docker Node.js Launch** 偵錯工具組態。

    Selected Docker debug configuration

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

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

    請注意,由於偵錯工具在應用程式啟動_後_才附加,因此第一次可能會錯過中斷點;您可能必須重新整理瀏覽器才能在第二次看到偵錯工具中斷。

    您可以將 inspectMode 屬性設定為 tasks.jsondocker-run: debug 工作 node 物件下的 break,將應用程式設定為在啟動執行之前等待偵錯工具附加。

檢視應用程式記錄

您可以使用容器上的 **檢視記錄** 命令,在 VS Code 中檢視記錄

  1. 導覽至 Docker Explorer。

  2. 在 **容器** 索引標籤中,在您的容器上按一下滑鼠右鍵,然後選擇 **檢視記錄**。

    Screenshot of logs in the terminal

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

後續步驟

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