Dockerfiles
什麼是 Dockerfile 以及如何使用它
Dockerfile 是建構 Docker 映像檔的配方。
這是工作流程:首先建立一個 Dockerfile,然後使用 docker build
從中建立一個 Docker 映像檔,最後從映像檔執行容器。
Dockerfile 是一個包含建構映像檔指令的文字檔案。
這些指令是部分組態語言,其中包含 FROM
、LABEL
、RUN
、COPY
、ENTRYPOINT
、CMD
、EXPOSE
、ENV
等關鍵字。
讓我們建立我們的第一個 Dockerfile:
假設你有一個包含簡單 Node.js 應用程式的資料夾,由一個 app.js
檔案組成,該檔案列出了在運行應用程式之前需要安裝的幾個相依性,以及 package-lock.json
。
在其中,創建一個名為 Dockerfile
的純文字檔案,不要加上副檔名,並包含以下內容:
1 | FROM node:14 |
注:
CMD
行中使用雙引號。單引號會導致錯誤。
在第一行中,我們指定要從哪個映像檔開始。這將是我們的基底映像檔。在這個案例中,它將使用基於 Alpine Linux 的官方 Node.js 映像檔,使用 Node 14。當從 Dockerfile 建立容器時,Docker 將從 Docker Hub 獲取該映像檔。
接下來,我們將工作目錄設定為 /usr/src/app
,這意味著我們的所有命令都將在該資料夾中執行,直到我們再次更改它。這是我們已知在 Node 映像檔中存在的資料夾。
我們複製位於當前資料夾中的 package.json
、package-lock.json
(使用星號萬用字元)和 app.js
檔案到工作目錄中。
我們執行 npm install
來安裝 package.json
檔案中列出的套件。
然後,我們將 port 3000 暴露給外部網路,因為這是我們的應用程式運行的 port。除非使用 EXPOSE
指令將其中一個 port 暴露給外部,否則容器完全與網路隔離。稍後我們將看到如何將電腦上的 port 映射到 Docker 容器中的 port。
最後,我們執行 node app.js
來啟動應用程式。
這就是一個 Dockerfile,我們很快將看到如何從中建立一個容器。
tags: [“Dockerfile”, “Docker”, “container”, “image”]