4
votes

I've created a simple .NET Core 3.0 web API. In the project directory, I have a Dockerfile that looks like this:

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"]

When running docker build -t dockerwebapisandbox . from the working directory of my project, I see a failure on step 9 of 10 (third COPY command):

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

When searching what the community was saying about this error, I found a suggestion here. The suggestion mentions screening into the VM, but this command fails, given that the com.docker.driver.amd64-linux/ directory does not exist where it's being expected. The screen command suggested looks like this: $ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

Other than trying the suggestion from the link above, I've tried uninstalling Docker and Docker Desktop altogether, in addition to the "Factory Reset" option provided in Docker Desktop.

FWIW, I am running MacOS Mojave. TIA for anyone who has suggestions.

1
Does the RUN ... -o output command create a directory /app/output, as distinct from the /app/out you're trying to COPY in the second stage? - David Maze
COPY --from=build-env /app/out . should be changed to COPY --from=build-env /app/output . because you are publishing to directory named "output" - Mohsin Mehmood
oof, yes you both are absolutely right.. thank you for finding such a silly mistake. - Steve Boniface

1 Answers

0
votes

I have faced the same error in Node. I was resolve using

COPY . .