0

I have two ContainerApps in the same solution, both build and run locally in Docker desktop, and 1 of them publishes to an Azure ContainerApp properly. The other one appears identical structurally and w.r.t. dockerfile/projectFile but fails to publish with the "failed to compute cache key" project copy error

Windows 11
VisualStudio 17.3.4 
Docker Desktop 4.12.0 / WSL2
\SolutionDir
    \FR911.Worker.Project1
        Dockerfile
        FR911.Worker.Project1.csproj
    \FR911.Worker.Project2
        Dockerfile
        FR911.Worker.Project2.csproj

Dockerfile for Project1 (publishes correctly)

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["FR911.Worker.Project1/FR911.Worker.Project1.csproj", "FR911.Worker.Project1/"]
RUN dotnet restore "FR911.Worker.Project1/FR911.Worker.Project1.csproj"
COPY . .
WORKDIR "/src/FR911.Worker.Project1"
RUN dotnet build "FR911.Worker.Project1.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "FR911.Worker.Project1.csproj" -c Release -o /app/publish /p:UseAppHost=false

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

Dockerfile for Project2 (does not publish)

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["FR911.Worker.Project2/FR911.Worker.Project2.csproj", "FR911.Worker.Project2/"]
RUN dotnet restore "FR911.Worker.Project2/FR911.Worker.Project2.csproj"
COPY . .
WORKDIR "/src/FR911.Worker.Project2"
RUN dotnet build "FR911.Worker.Project2.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "FR911.Worker.Project2.csproj" -c Release -o /app/publish /p:UseAppHost=false

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

Log for Project1 Publish (publishes correctly)

FR911.Worker.Project1 -> G:\FR911Cloud\FR911.Worker.Project1\bin\Release\net6.0\FR911.Worker.Project1.dll
FR911.Worker.Project1 -> G:\FR911Cloud\FR911.Worker.Project1\obj\Docker\publish\
Docker version 20.10.17, build 100c701
docker build -f "G:\FR911Cloud\FR911.Worker.Project1\Dockerfile" --force-rm -t fr911workerProject1  --label "com.microsoft.created-by=visual-studio" --label "com.microsoft.visual-studio.project-name=FR911.Worker.Project1" "G:\FR911Cloud" 
#1 [internal] load build definition from Dockerfile
#1 sha256:f35cad84d8f344f22ff5c01ec0f2b5593a1e8e8106c5a291cbb81d75702e8f4b
#1 transferring dockerfile: 980B done
#1 DONE 0.0s

#2 [internal] load .dockerignore
#2 sha256:773696df5d1b3a2e3082d19ade268ad9cee78057bcc7d5bf617dbf42632a68c3
#2 transferring context: 35B 0.0s done
#2 DONE 0.0s

#4 [internal] load metadata for mcr.microsoft.com/dotnet/aspnet:6.0
#4 sha256:ac4494cbca04ddb415c76edcbcc7688784c2a6ea65dd656286c013738aa3b75f
#4 DONE 0.0s

#3 [internal] load metadata for mcr.microsoft.com/dotnet/sdk:6.0
#3 sha256:9eb4f6c3944cfcbfe18b9f1a753c769fc35341309a8d4a21f8937f47e94c712b
#3 DONE 0.3s

#8 [build 1/7] FROM mcr.microsoft.com/dotnet/sdk:6.0@sha256:a788c58ec0604889912697286ce7d6a28a12ec28d375250a7cd547b619f19b37
#8 sha256:fff7c57bbc14150de4574cecfd040bdf8a628dc4f5265c2e038bd3fd64bdd55a
#8 DONE 0.0s

#5 [base 1/2] FROM mcr.microsoft.com/dotnet/aspnet:6.0
#5 sha256:50f1ddc10932c4a74c7af5704e931a9489c710faea4f2381fe2380827a900e00
#5 DONE 0.0s

#10 [internal] load build context
#10 sha256:a7dbe6d5c5594ebe893dc072a634555501969a46c9ae9d648db74ea23d0ee810
#10 transferring context: 673.15kB 1.4s done
#10 DONE 1.4s

#9 [build 2/7] WORKDIR /src
#9 sha256:fd721b9ab8612450c39dfab43831d16b893f71b294b4d92a8c1d6fdaf0c47a22
#9 CACHED

#11 [build 3/7] COPY [FR911.Worker.Project1/FR911.Worker.Project1.csproj, FR911.Worker.Project1/]
#11 sha256:91f73142833c22e9b36d6dfb095a3421596ba684c3076da61c19a7d7aae5f1bc
#11 CACHED

... continues until success

Log for Project2 Publish (fails)

FR911.Worker.Project2 -> G:\FR911Cloud\FR911.Worker.Project2\bin\Release\net6.0\FR911.Worker.Project2.dll
FR911.Worker.Project2 -> G:\FR911Cloud\FR911.Worker.Project2\obj\Docker\publish\
Docker version 20.10.17, build 100c701
docker build -f "G:\FR911Cloud\FR911.Worker.Project2\Dockerfile" --force-rm -t fr911workerProject2  --label "com.microsoft.created-by=visual-studio" --label "com.microsoft.visual-studio.project-name=FR911.Worker.Project2" "G:\FR911Cloud" 
#1 [internal] load build definition from Dockerfile
#1 sha256:69dc10bf751883ff6fa38a281a2a6e3570552aeded8c5f82fc34e54ad9c820c0
#1 transferring dockerfile: 32B done
#1 DONE 0.0s

#2 [internal] load .dockerignore
#2 sha256:5089ff4c45602d16118aed124a38ee56bbe29b79f636b726f36a16f813470f64
#2 transferring context: 35B 0.0s done
#2 DONE 0.0s

#4 [internal] load metadata for mcr.microsoft.com/dotnet/aspnet:6.0
#4 sha256:ac4494cbca04ddb415c76edcbcc7688784c2a6ea65dd656286c013738aa3b75f
#4 DONE 0.0s

#3 [internal] load metadata for mcr.microsoft.com/dotnet/sdk:6.0
#3 sha256:9eb4f6c3944cfcbfe18b9f1a753c769fc35341309a8d4a21f8937f47e94c712b
#3 DONE 0.3s

#8 [build 1/7] FROM mcr.microsoft.com/dotnet/sdk:6.0@sha256:a788c58ec0604889912697286ce7d6a28a12ec28d375250a7cd547b619f19b37
#8 sha256:fff7c57bbc14150de4574cecfd040bdf8a628dc4f5265c2e038bd3fd64bdd55a
#8 DONE 0.0s

#9 [build 2/7] WORKDIR /src
#9 sha256:fd721b9ab8612450c39dfab43831d16b893f71b294b4d92a8c1d6fdaf0c47a22
#9 CACHED

#5 [base 1/2] FROM mcr.microsoft.com/dotnet/aspnet:6.0
#5 sha256:50f1ddc10932c4a74c7af5704e931a9489c710faea4f2381fe2380827a900e00
#5 DONE 0.0s

#10 [internal] load build context
#10 sha256:193c5f727995c82adbaa58aed42c8a05308b1cbab22f31bea74fad6ffe5c2e83
#10 transferring context: 673.11kB 1.4s done
#10 DONE 1.4s

#11 [build 3/7] COPY [FR911.Worker.Project2/FR911.Worker.Project2.csproj, FR911.Worker.Project2/]
#11 sha256:687c29b5b257b0efc68aa34321eca5a6576a579c63371f320e619daa0c9c705c
#11 ERROR: "/FR911.Worker.Project2/FR911.Worker.Project2.csproj" not found: not found
------
 > [build 3/7] COPY [FR911.Worker.Project2/FR911.Worker.Project2.csproj, FR911.Worker.Project2/]:
------
failed to compute cache key: "/FR911.Worker.Project2/FR911.Worker.Project2.csproj" not found: not found

The publish profiles are also identical except for the container & environment names, and the project files both target net6.0 and Linux. The Docker command that VisualStudio runs to build each also seems identical(except for the path & name):

docker build -f "G:\FR911Cloud\FR911.Worker.Project2\Dockerfile" --force-rm -t fr911workerProject2  --label "com.microsoft.created-by=visual-studio" --label "com.microsoft.visual-studio.project-name=FR911.Worker.Project2" "G:\FR911Cloud" 

I'm having trouble finding out why one works and the other fails - presumably because it cannot find the project at step 3 of the build from the dockerfile COPY ["FR911.Worker.Project2/FR911.Worker.Project2.csproj", "FR911.Worker.Project2/"]

pseabury
  • 1,615
  • 3
  • 16
  • 30

1 Answers1

0

It was a casing issue in the Dockerfile on the project file name.

COPY ["FR911.Worker.Project2/FR911.Worker.Project2.csproj", "FR911.Worker.Project2/"]

is not the same as

COPY ["FR911.Worker.Project2/FR911.Worker.project2.csproj", "FR911.Worker.Project2/"]
pseabury
  • 1,615
  • 3
  • 16
  • 30