將應用程式容器化
在本指南的其餘部分,您將會使用一個在 Node.js 上執行的簡單待辦事項清單管理程式。如果您不熟悉 Node.js,不用擔心。本指南不需要任何 JavaScript 的先前經驗。
先決條件
- 您已安裝最新版本的 Docker Desktop。
- 您已安裝 Git 用戶端。
- 您擁有一個用於編輯檔案的 IDE 或文字編輯器。Docker 建議使用 Visual Studio Code。
取得應用程式
在執行應用程式之前,您需要將應用程式原始碼取得至您的機器上。
使用下列指令複製 getting-started-app 儲存庫
$ git clone https://github.com/docker/getting-started-app.git查看已複製儲存庫的內容。您應該會看到下列檔案和子目錄。
├── getting-started-app/ │ ├── .dockerignore │ ├── package.json │ ├── README.md │ ├── spec/ │ ├── src/ │ └── yarn.lock
建置應用程式映像檔
若要建置映像檔,您需要使用 Dockerfile。Dockerfile 只是一個沒有副檔名的純文字檔案,其中包含腳本指令。Docker 會使用此腳本來建置容器映像檔。
在
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 映像檔。它會將所有原始碼複製到映像檔中,安裝必要的相依套件,並啟動應用程式。使用下列指令建置映像檔
在終端機中,請確保您位於
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 指令在容器中執行應用程式。
使用
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)。如果不進行連接埠對應,您將無法從主機存取應用程式。幾秒鐘後,開啟您的網頁瀏覽器並前往 https://:3000。您應該會看到您的應用程式。

新增一兩個項目並確認它如預期運作。您可以將項目標記為已完成並刪除它們。您的前端已成功將項目儲存在後端。
至此,您已經擁有一個正在執行且包含幾個項目的待辦事項清單管理程式。
如果您快速瀏覽一下您的容器,您應該會看到至少有一個正在執行的容器,它使用 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) 索引標籤以查看您的容器清單。

總結
在本節中,您學習了建立 Dockerfile 以建置映像檔的基礎知識。一旦建置了映像檔,您就啟動了一個容器並看到了執行中的應用程式。
相關資訊
下一步
接下來,您將對您的應用程式進行修改,並學習如何使用新映像檔更新執行中的應用程式。在此過程中,您還會學到一些其他有用的指令。
更新應用程式