为什么dockerbuild立我的复制path与临时目录前缀?

这里是DockerFile。

FROM microsoft/aspnet:4.7 ARG source WORKDIR /inetpub/wwwroot COPY ${source:-obj/Docker/publish} . 

这是错误。

 Error Building a.enterpriseextservices Service 'a.enterpriseextservices' failed to build: COPY failed: GetFileAttributesEx \\?\C:\Users\jesmiller-AM\AppData\Local\Temp\docker- builder587295999\obj\Docker\publish: The system cannot find the file specified.. For more troubleshooting information, go to http://aka.ms/DockerToolsTroubleshooting docker-compose C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.VisualStudio.Docker.Compose.targets 349 

我已经发布了项目到obj / Docker /发布文件夹。 这是我的docker-compose文件。 我从docker-compose.yml文件所在的文件夹中使用了docker-compose up命令。

 version: '3' services: a.web.familyconnection: image: a.web.familyconnection build: context: .\FamilyConnection dockerfile: Dockerfile b.enterpriseextservices: image: b.enterpriseextservices build: context: .\Framework\b.EnterpriseExtServices dockerfile: Dockerfile 

它看起来像文件夹的path,或者你发布代码的地方可能是不正确的。 项目应该在context定义的相应文件夹内的obj/Docker/publish文件夹中obj/Docker/publish

使用示例docker-compose.yml

 version: "3" services: foo: build: ./foo bar: build: ./bar 

Dockerfile

 FROM jaydorsey/ruby-2.4.1 COPY ${source:-obj/Docker/publish} . 

像这样的树结构:

 . ├── Dockerfile ├── bar │  └── Dockerfile ├── docker-compose.yml ├── foo │  └── Dockerfile └── obj └── Docker └── publish 

当我运行docker-compose build ,出现以下错误

 Building foo Step 1/2 : FROM jaydorsey/ruby-2.4.1 ---> b79899b232f6 Step 2/2 : COPY ${source:-obj/Docker/publish} . ERROR: Service 'foo' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder186649811/obj/Docker/publish: no such file or directory 

这跟你的不一样,因为我运行的是macOS,但是非常相似。 你会注意到临时文件的位置(这是一个Docker的内部工件,它是如何复制文件的),以及docker-build<randomstring>path的相似性

但是,如果我在每个子文件夹( context )下创buildobj/Docker/publish文件夹, docker-compose build命令将正常工作。

 . ├── Dockerfile ├── bar │  ├── Dockerfile │  └── obj │  └── Docker │  └── publish ├── docker-compose.yml ├── foo │  ├── Dockerfile │  └── obj │  └── Docker │  └── publish └── obj └── Docker └── publish 

请检查您发布的文件夹是否存在于上下文中,而不是在根目录下。

我仍然相信这是错误信息中提到的path问题。 我希望这提供了一些帮助您debugging根本原因的上下文。

你能确认你的文件和文件夹的布局吗? 我相当肯定它的path相关,因为错误信息。 我还没有做任何Docker的Windows工作,但我也会仔细检查你的默认path使用正确的斜杠(向前与向后)