首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Docker:复制失败: CreateFile,正在陌生位置查找文件

Docker:复制失败: CreateFile,正在陌生位置查找文件
EN

Stack Overflow用户
提问于 2018-03-27 20:21:56
回答 8查看 13.8K关注 0票数 10

尝试按照教程找到了here,但遇到了问题。

我从我的项目目录中运行以下命令:

代码语言:javascript
复制
docker build -t my.solution .

我得到了以下信息:

代码语言:javascript
复制
Sending build context to Docker daemon  111.6kB
Step 1/17 : FROM microsoft/aspnetcore:2.0-nanoserver-1709 AS base
 ---> ccfb41c8f5b5
Step 2/17 : WORKDIR /app
 ---> Using cache
 ---> e29a68e16001
Step 3/17 : EXPOSE 80
 ---> Using cache
 ---> 976388139964
Step 4/17 : FROM microsoft/aspnetcore-build:2.0-nanoserver-1709 AS build
 ---> d7ab4e860769
Step 5/17 : WORKDIR /src
 ---> Using cache
 ---> 4ab01220723e
Step 6/17 : COPY my.solution.sln ./
COPY failed: CreateFile \\?\C:\ProgramData\Docker\tmp\docker-builder564035917\my.solution.sln: The system cannot find the file specified.

我不知道它为什么要在它要查找的位置找到文件。有谁可以帮我?是否需要进行配置设置?我的Docker文件如下所示:

代码语言:javascript
复制
FROM microsoft/aspnetcore:2.0-nanoserver-1709 AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/aspnetcore-build:2.0-nanoserver-1709 AS build
WORKDIR /src
COPY my.solution.sln ./
COPY my.solution/my.solution.csproj my.solution/
RUN dotnet restore -nowarn:msb3202,nu1503
COPY . .
WORKDIR /src/my.solution
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", "my.solution.dll"]

更新

根据@AlexGera的回答,我尝试将docker文件更改为:

代码语言:javascript
复制
FROM microsoft/aspnetcore:2.0-nanoserver-1709 AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/aspnetcore-build:2.0-nanoserver-1709 AS build
WORKDIR /src
VOLUME C:/tmp
COPY my.solution.sln c:/tmp/
COPY my.solution/my.solution.csproj my.solution/
RUN dotnet restore -nowarn:msb3202,nu1503
COPY . .
WORKDIR /src/my.solution
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", "my.solution.dll"]

但是错误消息并没有明显的改变:

代码语言:javascript
复制
docker build -t my.solution .
Sending build context to Docker daemon  111.6kB
Step 1/18 : FROM microsoft/aspnetcore:2.0-nanoserver-1709 AS base
 ---> ccfb41c8f5b5
Step 2/18 : WORKDIR /app
 ---> Using cache
 ---> e29a68e16001
Step 3/18 : EXPOSE 80
 ---> Using cache
 ---> 976388139964
Step 4/18 : FROM microsoft/aspnetcore-build:2.0-nanoserver-1709 AS build
 ---> d7ab4e860769
Step 5/18 : WORKDIR /src
Removing intermediate container 31e30e2346aa
 ---> 61c7df20f3c4
Step 6/18 : VOLUME C:/tmp
 ---> Running in fada6c728151
Removing intermediate container fada6c728151
 ---> 7a650440cc1f
Step 7/18 : COPY my.solution.sln c:/tmp/
COPY failed: CreateFile \\?\C:\ProgramData\Docker\tmp\docker-builder832533802\my.solution.sln: The system cannot find the file specified.
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2018-10-05 02:05:46

在我看来,新解决方案附带的标准Dockerfile出现了bugged :/

我将folder文件从PowerShell上移到解决方案文件夹:

代码语言:javascript
复制
mv Dockerfile ../Dockerfile

从那里运行docker build命令为我完成了这个任务……

票数 32
EN

Stack Overflow用户

发布于 2018-05-31 19:42:25

复制命令将从生成上下文或以前的生成阶段(如果指定了阶段)复制文件。使用build命令:

代码语言:javascript
复制
docker build -t my.solution .

上下文是.,它首先被发送到docker引擎,docker引擎将其放在一个临时位置,仅用于构建。

因此,使用您的copy命令:

代码语言:javascript
复制
Step 6/17 : COPY my.solution.sln ./

文件my.solution.sln需要存在于运行构建命令的文件夹中。

对于目标,文件将被复制到容器内的工作目录,或者在您的示例中为/src

票数 5
EN

Stack Overflow用户

发布于 2019-05-16 19:15:41

这可能是由于您的DockerFile旁边的.dockerignore文件忽略了除/obj/*之外的所有内容。一旦您将其复制到另一个文件夹,您就没有复制.dockerignore文件,因此没有任何东西被排除,它可以正常工作。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49512727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档