Dockerfile表示复制失败:在.NET Core Dockerfile中

Dockerfile表示复制失败:在.NET Core Dockerfile中,docker,asp.net-core,dockerfile,Docker,Asp.net Core,Dockerfile,大家好 我是docker的新手,我想将我的ASP.NET核心应用程序容器化,但出现了一个错误,我无法继续构建我的映像 这是我的示例Dockerfile FROM microsoft/dotnet:latest COPY . /app WORKDIR /app/MyWebApp RUN dotnet build RUN dotnet publish -c Release -o out FROM microsoft/dotnet:2.1-aspnetcore-runtime EXPOSE 80 W

大家好

我是docker的新手,我想将我的ASP.NET核心应用程序容器化,但出现了一个错误,我无法继续构建我的映像

这是我的示例Dockerfile

FROM microsoft/dotnet:latest
COPY . /app
WORKDIR /app/MyWebApp
RUN dotnet build
RUN dotnet publish -c Release -o out

FROM microsoft/dotnet:2.1-aspnetcore-runtime
EXPOSE 80
WORKDIR /app
COPY ${source:-MyWebApp/out} .
ENTRYPOINT ["dotnet", "MyWebApp.dll"]
除了最后的两个步骤,我已经完成了所有步骤。错误是


“复制失败:stat/var/lib/docker/tmp/docker-builder\uuuuuu\uuuu/MyWebApp/out:没有这样的文件或目录”

Publish使用以下格式创建目标目录:

bin\$(配置)\netcoreapp\publish

因此,您的输出目录将在以下目录下创建:

COPY${source:-MyWebApp/bin/Release/netcoreapp/publish/out}。

注意:用.net版本替换


您可以阅读更多有关它的信息

docker文件中有两个问题

  • 您的.net核心版本在microsoft/dotnet:latest的
    和microsoft/dotnet:2.1-aspnetcore-runtime的
    之间不匹配
  • 对于发布输出,请尝试将
    作为发布
    这是一个正在工作的dockerfile

    FROM microsoft/dotnet:2.1-sdk AS publish
    COPY . /app
    WORKDIR /app/MyWebApp
    RUN dotnet build
    RUN dotnet publish -c Release -o out
    
    FROM microsoft/dotnet:2.1-aspnetcore-runtime 
    EXPOSE 80
    WORKDIR /app
    COPY --from=publish /app/MyWebApp/out .
    
    ENTRYPOINT ["dotnet", "MyWebApp.dll"]