我是 docker 新手,我正在按照 Microsoft 的教程在https://docs.microsoft.com/en-us/dotnet/core/docker/build-container?tabs=上使用 docker 構建 .net 核心控制臺應用程式視窗
這是一個簡單的 Hello World 應用程式的 docker 檔案定義
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env
WORKDIR /app
COPY . ./
# Restore as distinct layers
RUN dotnet restore
# Build and publish a release
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "DotNet.Docker.dll"]
在上面的例子中,build-env這條線是COPY --from=build-env /app/out .什么?我嘗試了google,但沒有回傳任何相關文章,并且在官方檔案中也找不到任何幫助。
在教程頁面中它說
COPY 命令告訴 Docker 將您計算機上的指定檔案夾復制到容器中的檔案夾中。在此示例中,發布 檔案夾被復制到容器中名為 app 的檔案夾中。
我假設作者的意思是我們將/app/out的內容復制到/app檔案夾,因為沒有名為/publish的檔案夾。所以目標檔案夾由上一行定義:WORDIR /app. 當我最初閱讀時COPY --from=build-env /app/out .,我認為它是從/build-env復制到app/out 的,但事實并非如此。
另外,這條線的目的是什么COPY . ./?
uj5u.com熱心網友回復:
build-env這個背景關系只是mcr.microsoft.com/dotnet/sdk:6.0影像的別名。
為影像創建別名的語法如下:
[image_name] AS [Alias]
現在您可以在 Dockerfile 中使用別名而不是冗長的影像名稱。
COPY --from=build-env /app/out .將 /app/out 從基于 build-env 的容器復制到將從此 dockerfile 構建的新映像上的 WORKDIR /app。
COPY . ./會將這個 dockerfile 所在目錄的內容復制到WORKDIR /app將從此 dockerfile 構建的新映像上。
uj5u.com熱心網友回復:
build-env 定義在 dockerfile 的第一行:mcr.microsoft.com/dotnet/sdk:6.0
副本。./ 表示將所有檔案從 src 位置(當前)復制到目標(./)。您可以在https://docs.docker.com/engine/reference/builder/中獲取有關 dockerfile 的更多詳細資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/495289.html
標籤:C# 。网 码头工人 dockerfile
