Search code examples
dockerdocker-composedocker-machinedocker-build

Docker - open /var/lib/docker/overlay2/xxx/merged/etc/passwd: no such file or directory


I'm trying to 'docker build -t aspnetapp .' But it stopped and shows error below.

=> ERROR [base 2/2] WORKDIR /app                                                                                                                                                                            ------
 > [base 2/2] WORKDIR /app:
------
open /var/lib/docker/overlay2/702cb1f56ae4d4a7a5c14cf0db796842b47c7a237a02216dd59ac7bfd8044fca/merged/etc/passwd: no such file or directory

What I have tried:

  • Removed DockerDesktop folder on C:\ProgramData
  • Restarted Docker
  • Uninstall and re-install Docker

Nothing works. Anyone has an idea to make this work?

Below is my Dockerfile

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-nanoserver-1903 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-1903 AS build
WORKDIR /src
COPY ["SampleCoreProject.csproj", "SampleCoreProject/"]
RUN dotnet restore "SampleCoreProject.csproj"
COPY . .
WORKDIR "/src/SampleCoreProject"
RUN dotnet build "SampleCoreProject.csproj" -c Release -o /app/build

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

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

Solution

  • I create a new project which the .csproj and Dockerfile are at same folder, and the Dockerfile is a little different from yours, try this:

    FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
    WORKDIR /app
    EXPOSE 80
    EXPOSE 443
    
    FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
    WORKDIR /src
    COPY ["SampleCoreProject.csproj", "."]
    RUN dotnet restore "./SampleCoreProject.csproj"
    COPY . .
    WORKDIR "/src/."
    RUN dotnet build "SampleCoreProject.csproj" -c Release -o /app/build
    
    FROM build AS publish
    RUN dotnet publish "SampleCoreProject.csproj" -c Release -o /app/publish
    
    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app/publish .
    ENTRYPOINT ["dotnet", "SampleCoreProject.dll"]