將應用程式容器化

在本指南的其餘部分,您將使用一個在 Node.js 上執行的簡單待辦事項列表管理器。如果您不熟悉 Node.js,請不要擔心。本指南不需要任何 JavaScript 的先前經驗。

先決條件

獲取應用程式

在執行應用程式之前,您需要將應用程式原始碼獲取到您的機器上。

  1. 使用以下命令克隆 getting-started-app 倉庫

    $ git clone https://github.com/docker/getting-started-app.git
    
  2. 檢視克隆倉庫的內容。您應該會看到以下檔案和子目錄。

    ├── getting-started-app/
    │ ├── .dockerignore
    │ ├── package.json
    │ ├── README.md
    │ ├── spec/
    │ ├── src/
    │ └── yarn.lock

構建應用程式的映象

要構建映象,您需要使用 Dockerfile。Dockerfile 只是一個沒有副檔名的基於文字的檔案,其中包含一個指令指令碼。Docker 使用此指令碼來構建容器映象。

  1. getting-started-app 目錄中,與 package.json 檔案相同的位置,建立一個名為 Dockerfile 的檔案,內容如下

    # syntax=docker/dockerfile:1
    
    FROM node:lts-alpine
    WORKDIR /app
    COPY . .
    RUN yarn install --production
    CMD ["node", "src/index.js"]
    EXPOSE 3000

    此 Dockerfile 以 node:lts-alpine 基礎映象開始,這是一個輕量級的 Linux 映象,預裝了 Node.js 和 Yarn 包管理器。它將所有原始碼複製到映象中,安裝必要的依賴項,並啟動應用程式。

  2. 使用以下命令構建映象

    在終端中,確保您位於 getting-started-app 目錄中。將 /path/to/getting-started-app 替換為您的 getting-started-app 目錄的路徑。

    $ cd /path/to/getting-started-app
    

    構建映象。

    $ docker build -t getting-started .
    

    docker build 命令使用 Dockerfile 來構建一個新映象。您可能已經注意到 Docker 下載了很多“層”。這是因為您指示構建器要從 node:lts-alpine 映象開始。但是,由於您的機器上沒有該映象,Docker 需要下載該映象。

    在 Docker 下載映象後,Dockerfile 中的指令將您的應用程式複製進來,並使用 yarn 來安裝應用程式的依賴項。CMD 指令指定了從此映象啟動容器時要執行的預設命令。

    最後,-t 標誌為您的映象新增標籤。可以將其視為最終映象的一個人類可讀的名稱。由於您將映象命名為 getting-started,您可以在執行容器時引用該映象。

    docker build 命令末尾的 . 告訴 Docker 它應該在當前目錄中查詢 Dockerfile

啟動應用程式容器

現在您有了一個映象,您可以使用 docker run 命令在容器中執行該應用程式。

  1. 使用 docker run 命令執行您的容器,並指定您剛剛建立的映象的名稱

    $ docker run -d -p 127.0.0.1:3000:3000 getting-started
    

    -d 標誌(--detach 的縮寫)在後臺執行容器。這意味著 Docker 啟動您的容器並將您返回到終端提示符。此外,它不會在終端中顯示日誌。

    -p 標誌(--publish 的縮寫)在主機和容器之間建立一個埠對映。-p 標誌接受一個格式為 HOST:CONTAINER 的字串值,其中 HOST 是主機上的地址,CONTAINER 是容器上的埠。該命令將容器的埠 3000 釋出到主機上的 127.0.0.1:3000 (localhost:3000)。沒有埠對映,您將無法從主機訪問該應用程式。

  2. 幾秒鐘後,在您的網頁瀏覽器中開啟 https://:3000。您應該會看到您的應用程式。

    Empty todo list
  3. 新增一兩個專案,看看它是否如您預期那樣工作。您可以將專案標記為已完成並刪除它們。您的前端正在成功地將專案儲存在後端。

此時,您有一個正在執行的待辦事項列表管理器,其中有幾個專案。

如果您快速檢視您的容器,您應該會看到至少有一個正在執行的容器,它使用 getting-started 映象並在埠 3000 上執行。要檢視您的容器,您可以使用 CLI 或 Docker Desktop 的圖形介面。

在終端中執行 docker ps 命令以列出您的容器。

$ docker ps

應出現類似以下的輸出。

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
df784548666d        getting-started     "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes        127.0.0.1:3000->3000/tcp   priceless_mcclintock

在 Docker Desktop 中,選擇 Containers 選項卡以檢視您的容器列表。

Docker Desktop with get-started container running

摘要

在本節中,您學習了建立 Dockerfile 來構建映象的基礎知識。構建映象後,您啟動了一個容器並看到了正在執行的應用程式。

相關資訊

後續步驟

接下來,您將對您的應用程式進行修改,並學習如何使用新映象更新您正在執行的應用程式。在此過程中,您還將學習其他一些有用的命令。

更新應用程式