【问题标题】:ASP.NET 4.7.2 - Docker - COPY Failed: CreateFile + The system cannot find the file specifiedASP.NET 4.7.2 - Docker - 复制失败:CreateFile + 系统找不到指定的文件
【发布时间】:2019-10-30 13:20:03
【问题描述】:

我使用 Visual Studio 2019 创建了一个全新的 ASP.NET 4.7.2 MVC Web 应用程序。在 Visual Studio 2019 中初始化解决方案时,我选中了Docker support 复选框。这在我的项目中添加了一个名为 Dockerfile 的文件,如下所示:

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
ARG source
WORKDIR /inetput/wwwroot
COPY ${source:-obj/Docker/publish} .

我尝试使用来自 Azure DevOps 中的 Docker 任务的 build 命令构建 Docker 映像。当我这样做时,我得到以下信息:

Step 1/13 : FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
  ---> [id1]
Step 2/13 : ARG source
  ---> Running in [id2]
Removing immediate container [id2]
  ---> [id3]
Step 3/13 : WORKDIR / inetpub/wwwroot
  ---> Running in [id4]
Removing immediate container [id4]
COPY failed: CreateFile \\?\C:\ProgramData\docker\tmp\docker-build-[id5]\obj\Docker\publish: The system cannot find the path specified.
  ---> [id6]
STEP 4/13 : COPY ${source:-obj/Docker/publish} .

怎么了?为什么复制失败?显然这是因为它“找不到文件”。但是,我不确定它应该在哪里。我没有更改 Dockerfile。我只是尝试从 Azure DevOps 中的“Hello World”ASP.NET 4.7.2 Web 应用程序构建 Docker 映像。我正在尝试学习如何将 Docker 与 Azure DevOps 结合使用。

谢谢

【问题讨论】:

    标签: docker azure-devops


    【解决方案1】:

    复制 ${source:-obj/Docker/publish} .

    首先,我们需要知道这个脚本行是什么意思。它表达的是:

    您好 Docker,这里有一个请求。请将您从路径$source 中找到的文件COPY 放入图像的当前目录.。如果$source里面什么都没有或者不存在,直接走默认路径obj/Docker/publish就行了。

    总之,这个脚本试图从 obj/Docker/publish 复制你编译的 .NET 应用程序位

    脚本格式可以参考这个guide


    用一句话来表示上面的编译过程,就是试图从obj/Docker/publish复制编译好的ASP.NET应用程序

    因此,在 Azure Devops 中,您需要在构建映像之前添加一个构建任务来构建解决方案。然后使用 Copy file 任务将构建文件复制到 docker 映像中。否则,${source:-obj/Docker/publish} 文件夹将不会显示。

    由于您的项目是一个 ASP.NET 项目,您可以按照这个doc 和这个blog 来实现您的项目构建。


    另外,你可以参考这个thread

    两个答案中提供的解决方案都是正确的,只是方向不一样。第一个解决方案是修改dockerfile 使其适用于Azure devops,无需任何解决方案构建。而在第二个答案中,它是使用我上面提到的Azure Devops中的任务,通过使用默认的dockerfile来实现项目可以使用docker build执行。

    【讨论】:

      猜你喜欢
      • 2018-09-23
      • 2018-09-05
      • 2017-05-05
      • 2014-07-31
      • 2017-05-22
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 2023-02-20
      相关资源
      最近更新 更多