Docker ADD命令产生“找不到文件”错误

时间:2019-05-17 17:56:34

标签: docker .net-core docker-compose microservices visual-studio-2019

我正在尝试使用Visual Studio中的docker-compose项目类型将少数微服务移至docker容器。

我也有Service Fabric项目,因此必须将Service Fabric SDK安装到我的Docker容器中。

这就是我要做的(我的dockerfile):

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-nanoserver-1809 AS base
WORKDIR /app
EXPOSE 80

...

WORKDIR /temp

ADD https://aka.ms/vs/15/release/vs_buildtools.exe /temp #C:\TEMP\vs_buildtools.exe

...

其余代码无关紧要,因为它与ADD命令一起崩溃。 通过Ctrl + F5运行此命令后,输出错误:

3>Step 4/11 : ADD https://aka.ms/vs/15/release/vs_buildtools.exe /temp
3>Service 'bmt.microservices.snowforecastcenter' failed to build: ADD failed: CreateFile \\?\C:\ProgramData\Docker\tmp\docker-builder567273413\temp: The system cannot find the file specified.

我不明白我在做什么错,这意味着“系统找不到文件”,因为我只是从互联网上加载文件并将其放入新创建的\ temp文件夹中(链接有效,我检查了。)

有人知道这可能与什么有关吗?

1 个答案:

答案 0 :(得分:3)

好的,我不小心通过将注释移至下一行来解决了问题。

从此:

ADD https://aka.ms/vs/15/release/vs_buildtools.exe /temp #C:\TEMP\vs_buildtools.exe

对此:

ADD https://aka.ms/vs/15/release/vs_buildtools.exe /temp
#C:\TEMP\vs_buildtools.exe

然后我在官方网站(https://docs.docker.com/engine/reference/builder/#/from)上发了言,您无法插入内嵌注释,因为它们被视为参数:

  

Docker将以#开头的行视为注释,除非该行是有效的解析器指令。一行中其他任何地方的#标记均被视为参数。

我希望这会对其他Docker新手有所帮助。