探索 Dockerfile 的元素
Dockerfile 是一個指令碼,其中包含一系列用來建置 Docker 映像的指示。 Dockerfiles 通常包含下列資訊:
- 用來建立新映像的基礎映像或父映像
- 要更新基礎 OS 並安裝其他軟體的命令
- 要包含的組建成品,例如開發的應用程式
- 要公開的服務,例如儲存體和網路設定
- 要在容器啟動時執行的命令
建立 Dockerfile
建立 Dockerfile 的第一個步驟,就是選擇作為應用程式基礎的基礎映像。 例如,如果您要建置 .NET 應用程式,則可以選擇 Microsoft .NET 映像作為基礎。
# Use the .NET 6 runtime as a base image
FROM mcr.microsoft.com/dotnet/runtime:6.0
# Set the working directory to /app
WORKDIR /app
# Copy the contents of the published app to the container's /app directory
COPY bin/Release/net6.0/publish/ .
# Expose port 80 to the outside world
EXPOSE 80
# Set the command to run when the container starts
CMD ["dotnet", "MyApp.dll"]
讓我們逐行查看其用途:
-
FROM mcr.microsoft.com/dotnet/runtime:6.0
:此命令會將基礎映像設定為 .NET 6 執行階段,這是執行 .NET 6 應用程式所需的映像。 -
WORKDIR /app
:將工作目錄設定為/app
,其是複製應用程式檔案的位置。 -
COPY bin/Release/net6.0/publish/ .
:將所發佈應用程式的內容複寫到容器的/app
目錄。 我們假設 .NET 6 應用程式已建置並發佈至bin/Release/net6.0/publish
目錄。 -
EXPOSE 80
:向外界公開連接埠 80,這是預設 HTTP 連接埠。 如果您的應用程式在不同的連接埠上接聽,請相應地變更此行。 -
CMD ["dotnet", "MyApp.dll"]
:要在容器啟動時執行的命令。 在此情況下,我們會使用應用程式 DLL 檔案的名稱 (MyApp.dll
) 執行 dotnet 命令。 變更此行來比對您的應用程式名稱和進入點。
我們不會涵蓋 Dockerfile 檔案規格。 如需詳細資訊,請造訪 Dockerfile 參考 (英文)。 當我們建置最終容器映像時,這其中每個步驟都會建立快取的容器映像。 這些暫時性映像都會分層放在前一個映像上方,並在所有步驟完成後呈現為單一映像。
資源
- Docker 執行參考 (CLI)
- Docker 組建參考