复制Dockerfile中用于ASP.NET的命令

时间:2023-02-26 23:06:02 浏览:13次
(adsbygoogle = window.adsbygoogle || []).push({});

如何解决复制Dockerfile中用于ASP.NET的命令?

将copY . .整个项目以递归方式复制到用于构建的容器中。

将前两个copY命令与分隔开,dotnet restore然后将其copY与分隔开的原因dotnetbuild是为了加快构建速度的Docker缓存技巧。这样可以完成,因此不需要在每次更改代码时都安装项目依赖项。

Docker映像是分层构建的。Docker将构成每个新层的内容和说明与以前的版本进行比较。如果它们与现有层的SHA256校验和匹配,则可以跳过该层的构建步骤。

代码比依赖项变化得多,并且依赖项现在通常是从一个缓慢的(ish)网络中获取的。如果在依赖项完成后复制代码,则不会破坏所有其他更改的缓存依赖项层。

相当于Node.js package.json的应用执行内容之前的操作:

workdir /appcopY package.json /app/RUN npm installcopY . /app/CMD ["node", "app/index.js"]

解决方法

用于Docker的Visual Studio工具为ASP.NET项目创建一个包含以下COPY . .命令的Dockerfile :

WORKDIR /srcCOPY *.sln ./...COPY . .

根据我的阅读,<src>参数是相对于上下文的,因此不受WORKDIR/src命令的影响。该<dest>然而,相对于WORKDIR如此将在被人指指点点/src。

该命令是否只是从根目录移出其余文件进行打包(docker-compose.yml,.dockerignore等)?如果是这样,那为什么要在RUNdotnet build...命令之前完成呢?

完整的Dockerfile如下:

FROM microsoft/aspnetcore:2.0 AS baseWORKDIR /appEXPOSE 80FROM microsoft/aspnetcore-build:2.0 AS buildWORKDIR /srcCOPY *.sln ./COPY MyProject/MyProject.csproj MyProject/RUN dotnet restoreCOPY . . # The line mentioned aboveWORKDIR /src/MyProjectRUN dotnet build -c Release -o /appFROM build AS publishRUN dotnet publish -c Release -o /appFROM base AS finalWORKDIR /appCOPY --from=publish /app .ENTRYPOINT ["dotnet","MyProject.dll"]

相关推荐
评论
评论
发 布