为什么dockerbuild在我的复制路径前面加了一个临时目录



这是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:Usersjesmiller-AMAppDataLocalTempdocker-
builder587295999objDockerpublish: 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 Studio2017CommunityMSBuildSdksMicrosoft.Docker.SdkbuildMicrosoft.VisualStudio.Docker.Compose.targets  349 

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

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

我遇到了同样的问题。原来我犯了一个愚蠢的错误。我在我的.dokerignore文件中添加了以下内容,这只是在设置新项目时的习惯:

bin
obj
.vs
.git

然后我试着在Dockerfile 中运行这个

COPY ./bin/publish/ .

Docker给出了一个奇怪的tmp路径错误,因为自从我告诉它忽略我的/bin文件夹后,它又回到了那个路径。一旦我复制到不同的发布路径(而不是bin),问题就消失了。

看起来你的文件夹路径,或者你发布代码的位置可能不正确。项目应发布在context定义的相应文件夹内的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>路径中的相似性

但是,如果我在每个相应的子文件夹(context)下面创建obj/Docker/publish文件夹,则docker-compose build命令可以正常工作。

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

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

我仍然认为这是错误消息中指出的路径问题。我希望这能提供一些上下文来帮助您调试根本原因。

你能确认一下你的档案吗;文件夹布局?由于出现错误消息,我很确定它与路径有关。我也没有做任何Docker for Windows的工作,但我也会使用正确的斜杠(正向与反向)仔细检查您的默认路径

最新更新