gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:00:36 24 4
gpt4 key购买 nike

我已经安装了适用于 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.178MBStep 1/17 : FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base ---> 04aae08f15c5Step 2/17 : WORKDIR /app ---> Using cache ---> 135955e04284Step 3/17 : EXPOSE 34746 ---> Using cache ---> 85fd0075aa42Step 4/17 : EXPOSE 44398 ---> Using cache ---> 7e3d5526f601Step 5/17 : FROM microsoft/dotnet:2.1-sdk AS build ---> 7c3e298d40acStep 6/17 : WORKDIR /src ---> Using cache ---> b395ba27d8f9Step 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com