asp.net - Docker for Windows 构建为 COPY 添加了前缀 `/var/lib/docker/tmp/`?

标签 asp.net visual-studio docker asp.net-core dockerfile

我已经安装了适用于 Windows 的 Docker,并使用 Visual Studio 2017 创建了一个支持 docker 的新 Asp.net 核心应用程序(我还没有做任何更改)。但是docker build报如下错误。 Dockerfile 是否正确?

PS C:\source\repos\myProj\ProcessFiles> docker build .
Sending build context to Docker daemon  1.178MB
Step 1/17 : FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
 ---> 04aae08f15c5
Step 2/17 : WORKDIR /app
 ---> Using cache
 ---> 135955e04284
Step 3/17 : EXPOSE 34746
 ---> Using cache
 ---> 85fd0075aa42
Step 4/17 : EXPOSE 44398
 ---> Using cache
 ---> 7e3d5526f601
Step 5/17 : FROM microsoft/dotnet:2.1-sdk AS build
 ---> 7c3e298d40ac
Step 6/17 : WORKDIR /src
 ---> Using cache
 ---> b395ba27d8f9
Step 7/17 : COPY ProcessFiles/ProcessFiles.csproj ProcessFiles/
COPY failed: stat /var/lib/docker/tmp/docker-builder662645761/ProcessFiles/ProcessFiles.csproj: no such file
 or directory

Here is the Dockerfile automatically generated by Visual Studio. The error occurred on the line COPY ProcessFiles/ProcessFiles.csproj ProcessFiles/.

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 34746
EXPOSE 44398

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ProcessFiles/ProcessFiles.csproj ProcessFiles/
RUN dotnet restore ProcessFiles/ProcessFiles.csproj
COPY . .
WORKDIR /src/ProcessFiles
RUN dotnet build ProcessFiles.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish ProcessFiles.csproj -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "ProcessFiles.dll"]

这是 Visual Studio 输出。 (关于设置 AWS 的行被排除在外)。

检查 Dockerfile 以了解如何构建项目和 docker 镜像
...跳过构建项目,因为它是作为 Dockerfile 的一部分完成的
执行 docker build
... 调用 'docker build',工作文件夹 'C:\source\repos\myProj\ProcessFiles,docker 文件 C:\source\repos\myProc\ProcessFiles\Dockerfile,图像名称 processfiles:latest'
... docker build:将构建上下文发送到 Docker 守护进程 1.178MB
... docker build: COPY failed: stat/var/lib/docker/tmp/docker-builder225959758/ProcessFiles/ProcessFiles.csproj: 没有这样的文件或目录
... docker build: 步骤 1/17 : FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
... docker build: ---> 04aae08f15c5
... docker build:第 2/17 步:WORKDIR/app
... docker build: ---> 使用缓存
... docker build: ---> 135955e04284
... docker build:第 3/17 步:EXPOSE 34746
... docker build: ---> 使用缓存
... docker 构建:---> 85fd0075aa42
... docker build:第 4/17 步:EXPOSE 44398
... docker build: ---> 使用缓存
... docker build: ---> 7e3d5526f601
... docker build: 步骤 5/17 : FROM microsoft/dotnet:2.1-sdk AS build
... docker build: ---> 7c3e298d40ac
... docker build: 步骤 6/17 : WORKDIR/src
... docker build: ---> 使用缓存
... docker build: ---> b395ba27d8f9
... docker build:第 7/17 步:复制 ProcessFiles/ProcessFiles.csproj ProcessFiles/
执行“docker build”时出错
尝试清理为失败的部署创建的任何 ELB 资源
将容器发布到 AWS 的未知错误

以下是目录 C:\source\repos\myProj 中的文件.文件 Dockerfile在下 C:\source\repos\myProj\ProcessFile\ .应该向上移动一级吗?

模式名称
---- ----
d----- 斌
d----- 对象
d----- 进程文件
-a---- .dockerignore
-a---- .git 属性
-a---- .gitignore
-a---- docker-compose.dcproj
-a---- docker-compose.override.yml
-a---- docker-compose.yml
-a---- myProc.sln

最佳答案

当您运行构建命令时

docker build .
.在该命令中指示发送到(可能是远程)docker 引擎的“构建上下文”。所有的COPYADD命令必须来自此目录内部(或来自具有多阶段构建的前一阶段)。您还可以使用 .dockerignore 从此上下文中排除文件。文件。 tmp 目录是 docker 唯一生成的内部目录,由这个构建上下文组成。

要解决您的问题,您需要确保 ProcessFiles/ProcessFiles.csproj 存在于您运行构建的目录中,并且您没有使用 .dockerignore 从上下文中排除它。文件。

编辑:根据您的评论,将您的复制命令更改为:
COPY ProcessFiles.csproj ProcessFiles/

关于asp.net - Docker for Windows 构建为 COPY 添加了前缀 `/var/lib/docker/tmp/`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50846749/

相关文章:

javascript - 在按钮单击事件上初始化 AMCharts

visual-studio - 如何加速 VS.NET 2015 解决方案加载并粘贴到 ASPX 源 View 中?

c# - 未定义的预处理器变量 '$(var.WixInstall.TargetPath)' 。 WixInstaller D :work\Extractor\WixInstaller\Product. wxs

docker - 连接两个docker-compose容器

docker - Kubernetes 垃圾收集失败 - FreeDiskSpaceFailed & ImageGCFailed

c# - ASP.NET MVC5 Entity Framework 应用程序中的单一上下文

asp.net - 浏览器不支持 Entypo

asp.net - 在 IIS 7.5 上的 session 模块上挂起的请求

c# - Asp.net Identity 在没有 HttpContext 的情况下创建用户

Spring Actuator - 来自 docker 容器的指标聚合