.dockerignore is your friend - remember to use it
While working on a particular project built with a multi-stage Dockerfile I got this error:
Step 13/19 : RUN dotnet test "./DashboardServerTests/DashboardServerTests.csproj" -c Release --no-restore ---> Running in ac850e55464c Build started, please wait... /usr/share/dotnet/sdk/2.0.3/Sdks/Microsoft.NET.Sdk/build/Microsoft.PackageDependencyResolution.targets(323,5): error : Assets file '/Users/sankra/projects/DashboardServer/Grafana/obj/project.assets.json' not found. Run a NuGet package restore to generate this file. [/source/Grafana/Grafana.csproj]
The problem only appeared if the project was previously built on disk. After
Clean, the build ran fine through Docker too.
Thus, the solution is to start clean and be thankful that
.dockerignore, you can specify ignore rules and exceptions from these rules for files and folder. These won’t be included in the build context and thus won’t be visible to Docker while building from the Dockerfile.
For this specific project, my
.dockerignore looks like this:
This will skip all
obj folders, making every build a clean build.