將應用程式容器化

在本指南的其餘部分,您將會使用一個在 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 基礎映像檔開始,這是一個預先安裝了 Node.js 和 Yarn 套件管理器的輕量級 Linux 映像檔。它會將所有原始碼複製到映像檔中,安裝必要的相依套件,並啟動應用程式。

  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 下載了很多「層」(layers)。這是因為您指示建置器想要從 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 以建置映像檔的基礎知識。一旦建置了映像檔,您就啟動了一個容器並看到了執行中的應用程式。

相關資訊

下一步

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

更新應用程式
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.