探索 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 參考 (英文)。 當我們建置最終容器映像時,這其中每個步驟都會建立快取的容器映像。 這些暫時性映像都會分層放在前一個映像上方,並在所有步驟完成後呈現為單一映像。

資源