Dockertools: Cannot run ASP.NET Core app using buildkit

Created on 29 Sep 2019  路  7Comments  路  Source: microsoft/DockerTools

When I attempt to run the application in docker after switching to buildkit I get an error Docker command failed with exit code 0. Building the image from shell works as expected. I tried cleaning the solution and removing all containers & images.

I removed as much as possible from the Dockerfile and now it looks like this

# syntax=docker/dockerfile:1.0.0-experimental
# ---------------------- base ----------------------
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-alpine AS base
WORKDIR /app
EXPOSE 80

This is the build log

1>------ Build started: Project: MyProject, Configuration: Debug Any CPU ------
1>MyProject -> C:\dev\repos\MyProject\server\src\MyProject\bin\Debug\netcoreapp3.0\MyProject.dll
1>docker build -f "C:\dev\repos\MyProject\server\Dockerfile" --force-rm -t myproject:dev --target base  --secret id=pat,src=C:\dev\repos\MyProject\server\pat --no-cache --label "com.microsoft.created-by=visual-studio" --label "com.microsoft.visual-studio.project-name=MyProject" "C:\dev\repos\MyProject"
1>#2 [internal] load build definition from Dockerfile
1>#2 transferring dockerfile: 265B done
1>#1 DONE 0.1s
1>#1 transferring context: 2B done
1>#1 [internal] load .dockerignore
1>
1>#3 resolve image config for docker.io/docker/dockerfile:1.0.0-experimental
1>
1>#2 DONE 0.0s
1>#3 DONE 0.5s
1>
1>#4 CACHED
1>#4 docker-image://docker.io/docker/dockerfile:1.0.0-experimental@sha256:d2d...
1>
1>#5 transferring dockerfile: 265B done
1>#5 [internal] load build definition from Dockerfile
1>#6 [internal] load .dockerignore
1>#6 transferring context: 2B done
1>#6 DONE 0.1s
1>
1>#5 DONE 0.0s
1>
1>
1>#7 DONE 0.0s
1>#8 [1/1] FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-alpine
1>#8 CACHED
1>#7 [internal] load metadata for mcr.microsoft.com/dotnet/core/aspnet:3.0-al...
1>
1>#9 exporting layers done
1>#9 writing image sha256:d3bd5c37e72d2d46ca8f211de0a00202ee99b16e4738cd90c1d1b3ffc2296c17 done
1>#9 exporting to image
1>#9 naming to docker.io/library/myproject:dev
1>#9 naming to docker.io/library/myproject:dev done
1>#9 DONE 0.0s
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: Docker command failed with exit code 0.
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #2 [internal] load build definition from Dockerfile
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #2 transferring dockerfile: 265B done
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #2 DONE 0.0s
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: 
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #1 [internal] load .dockerignore
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #1 transferring context: 2B done
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #1 DONE 0.1s
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: 
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #3 resolve image config for docker.io/docker/dockerfile:1.0.0-experimental
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #3 DONE 0.5s
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: 
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #4 docker-image://docker.io/docker/dockerfile:1.0.0-experimental@sha256:d2d...
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #4 CACHED
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: 
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #5 [internal] load build definition from Dockerfile
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #5 transferring dockerfile: 265B done
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #5 DONE 0.0s
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: 
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #6 [internal] load .dockerignore
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #6 transferring context: 2B done
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #6 DONE 0.1s
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: 
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #7 [internal] load metadata for mcr.microsoft.com/dotnet/core/aspnet:3.0-al...
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #7 DONE 0.0s
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: 
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #8 [1/1] FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-alpine
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #8 CACHED
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: 
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #9 exporting to image
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #9 exporting layers done
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #9 writing image sha256:d3bd5c37e72d2d46ca8f211de0a00202ee99b16e4738cd90c1d1b3ffc2296c17 done
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #9 naming to docker.io/library/myproject:dev
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #9 naming to docker.io/library/myproject:dev done
1>C:\dev\repos\MyProject\server\Dockerfile : error CTC1014: #9 DONE 0.0s
1>Done building project "MyProject.csproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 9 up-to-date, 0 skipped ==========

Docker desktop 2.1.0.3 (38240) (Engine v19.03.2)
VS 16.3.1

Most helpful comment

@pikausp We've implemented a fix which will be available with 16.4 Preview 3. It will require updating the referenced Microsoft.VisualStudio.Azure.Containers.Tools.Targets to 1.9.7, which will become available when 16.4 Preview 3 releases.

It is possible that older versions of VS (e.g. I tested with 16.3) will work as long as you update the above package to 1.9.7, but, you will see failures during container warmup on project load (this warmup is just an optimization and not required to work). When you F5, it should work. If you wish to not see these failures, you can disable warmup in Tools > Options > Container tools > Single project > Run containers on project open.

All 7 comments

It seems like BuildKit may be outputting everything to stderr instead out stdout. Our logic treats non-zero exit code as error, but also output to stderr as error.

@pikausp We've implemented a fix which will be available with 16.4 Preview 3. It will require updating the referenced Microsoft.VisualStudio.Azure.Containers.Tools.Targets to 1.9.7, which will become available when 16.4 Preview 3 releases.

It is possible that older versions of VS (e.g. I tested with 16.3) will work as long as you update the above package to 1.9.7, but, you will see failures during container warmup on project load (this warmup is just an optimization and not required to work). When you F5, it should work. If you wish to not see these failures, you can disable warmup in Tools > Options > Container tools > Single project > Run containers on project open.

BuildKit is not supported on Windows hosts anymore.
See here - #1258.

@bwateratmsft since you've mentioned version 1.9.7 already three months ago, may I ask whether there's any ETA when this will become available?

Sorry for the oversight, the NuGet was published, but not publicly listed. The final version for VS 16.4 is 1.9.10 which is now publicly available

@NCarlsonMSFT thanks, it works like a charm! I wish there was an option to set DOCKER_BUILDKIT=1 project wise, i.e. in the launchSettings.json. Is this possible or would it be worth a new issue?

@sibbl That would be a new issue

Was this page helpful?
0 / 5 - 0 ratings