Docker - 无法构建简单的dotnet webapi容器:COPY失败:stat /var/lib/docker/overlay2错误

4

我已经创建了一个简单的.NET Core 3.0 Web API。在项目目录中,我有一个Dockerfile,如下所示:

FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build-env
WORKDIR /app

# copy over csproj and restore nuget packages
COPY DockerWebApiSandbox.csproj ./
RUN dotnet restore

# copy everything else over into the same directory as the last copy step
# and run the publish step to build and gather output
COPY . ./
RUN dotnet publish -c Release -o output

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "DockerWebApiSandbox.dll"]

从我的项目工作目录运行docker build -t dockerwebapisandbox .时,在第9步(第三个COPY命令)失败:

COPY failed: stat /var/lib/docker/overlay2/f6f3391827aef74f1dab5716635a9119ae250ae94a216bbc0bc7b47c4030d60a/merged/app/out: no such file or directory

当我在社区中搜索有关此错误的信息时,我发现了一个建议在这里。建议提到筛选进入VM,但是由于在期望位置处不存在com.docker.driver.amd64-linux/目录,因此此命令失败。建议的screen命令如下:$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty 除了尝试上面链接中的建议之外,我还尝试卸载Docker和Docker Desktop,并使用Docker Desktop中提供的“Factory Reset”选项。
FWIW,我正在运行MacOS Mojave。感谢任何有建议的人。

1
RUN ... -o output 命令是否会创建一个名为 /app/output 的目录,与第二阶段尝试 COPY/app/out 目录不同? - David Maze
1
COPY --from=build-env /app/out . 应更改为 COPY --from=build-env /app/output . 因为您要发布到名为“output”的目录。 - Mohsin Mehmood
哦,是的,你们两个都是完全正确的...谢谢你们发现这样一个愚蠢的错误。 - Steve Boniface
1个回答

0

我在Node中遇到了相同的错误。我使用以下方法解决了它

COPY . .

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接