当前位置: 首页 > 面试题库 >

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

左丘善
2023-03-14
问题内容

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

WORKDIR /src
COPY *.sln ./
...
COPY . .

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

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

完整的Dockerfile如下:

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY *.sln ./
COPY MyProject/MyProject.csproj MyProject/
RUN dotnet restore
COPY . . # The line mentioned above
WORKDIR /src/MyProject
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MyProject.dll"]

问题答案:

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

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

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

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

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

WORKDIR /app
COPY package.json /app/
RUN npm install
COPY . /app/
CMD ["node", "app/index.js"]


 类似资料:
  • 在dockerfile中,有相同的方法将copy命令与相对路径一起使用吗?我正在尝试使用: OBS。:我的结构文件夹(我在项目测试上运行dockerfile,另一个文件在项目控制台文件夹中)是: |-项目控制台 |-项目测试 Im收到以下错误: 错误:服务“app”无法生成:复制失败:未指定源文件。 我的目的是在同一个docker中有两个项目。我有一个dotnet核心控制台和另一个带有unity测

  • 我有一个容器运行在Kubernetes集群中(在POD内),旁边还有许多其他容器(在它们自己的POD中),我的容器是一个公共容器。现在,我想把文件从其他容器拉(复制)到我的公用容器中。我调查了一些选项,发现可以使用kubectl copy。但是,为此,我需要在公共容器中包含kubectl命令行工具。我不确定这是不是正确的方法。因此,我想到使用Java Kubernetes API来完成同样的工作。

  • 问题内容: 我注意到Dockerfile中的每一行都会创建一个单独的映像。创建的图像数量是否有限制? 我们是否应该尝试做一个单一的替代方案? 如果我们使用Quay这样的服务,这会有什么不同? 谢谢! 问题答案: 正如Alister所说,如果您使用AUFS文件系统,则Docker映像中的层数是有上限的。 在Docker 0.7.2版本中,限制增加到了127层( changelog )。 由于这是对底

  • 问题内容: 我正在尝试使用带有适当命令的命令自动创建开发Docker映像。我需要在命令中运行的脚本之一希望用户单击以阅读其许可协议。因此,有两个问题: ?中所有命令的输出在哪里? 可以与上述命令进行交互的解决方案是什么?现在,命令陷入僵局,要求用户无限循环输入。 问题答案: 在构建过程中,命令的输出显示在您的终端中。Docker构建过程是完全非交互的,因此您必须找到某种方式来自动接受这些条款(几乎

  • 我试图使用命令和适当的自动创建开发Docker映像。我需要在命令中运行的一个脚本希望用户单击并阅读他们的许可协议。因此有两个问题: 中所有 命令的输出在哪里? 有什么解决方案可以与上述命令交互?现在,命令只能在无限循环中向用户请求输入。

  • 本文向大家介绍ASP.NET中基于soaphead的webservice安全机制,包括了ASP.NET中基于soaphead的webservice安全机制的使用技巧和注意事项,需要的朋友参考一下 使用soaphead方法可以在webservice的请求中增加头部信息,当有人调用我们的webservice时,可以通过查询这个请求的头部信息并验证来防止该软件以外的程序调用webservice 一、服务