dotnet / sdk

Core functionality needed to create .NET Core projects, that is shared between Visual Studio and CLI
https://dot.net/core
MIT License
2.66k stars 1.06k forks source link

dotnet new dockerfile #16784

Open clarkezone opened 3 years ago

clarkezone commented 3 years ago

I recently attempted to manually add a docker file to a asp.net dotnetcore app but hit an error where the build failed with an unhelpful error message because I handn't supplied a docker ignore file. This was non-obvious hence prompting the following requests:

1) If the dotnet command when encountering this in a container build could show a more helpful error message that would be awesome 2) A Dotnet new dockerfile command that would add a minimal docker file and a .dockeringnore populated to prevent this issue would be even better to support commandline users like myself.

Result: PS C:\src\github.com\clarkezone\featherservicetest\src\BasicService> docker build -t cool . [+] Building 1.6s (18/20) => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 764B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for mcr.microsoft.com/dotnet/aspnet:5.0 0.2s => [internal] load metadata for mcr.microsoft.com/dotnet/sdk:5.0 0.2s => [stage-1 1/3] FROM mcr.microsoft.com/dotnet/aspnet:5.0@sha256:891da1ae4f8886a05ce3ea23cb5d3099aebcf05e67cc457ceee044442f8f4bce 0.0s => [build 1/12] FROM mcr.microsoft.com/dotnet/sdk:5.0@sha256:84cf7fdb35c9d2498db2292528af42bfdc4a34add689086abaed8dac4623d5d5 0.0s => [internal] load build context 0.2s => => transferring context: 3.37MB 0.2s => CACHED [build 2/12] WORKDIR /source 0.0s => CACHED [build 3/12] COPY .sln . 0.0s => CACHED [build 4/12] COPY BasicService/.csproj ./BasicService/ 0.0s => CACHED [build 5/12] COPY GreeterLogic/.csproj ./GreeterLogic/ 0.0s => CACHED [build 6/12] COPY GreeterLogic.Tests/.csproj ./GreeterLogic.Tests/ 0.0s => CACHED [build 7/12] RUN dotnet restore 0.0s => [build 8/12] COPY BasicService/. ./BasicService/ 0.0s => [build 9/12] COPY GreeterLogic/. ./GreeterLogic/ 0.0s => [build 10/12] COPY GreeterLogic.Tests/. ./GreeterLogic.Tests/ 0.0s => [build 11/12] WORKDIR /source/BasicService 0.0s => ERROR [build 12/12] RUN dotnet publish -c release -o /app --no-restore 0.9s [build 12/12] RUN dotnet publish -c release -o /app --no-restore:

19 0.432 Microsoft (R) Build Engine version 16.9.0+57a23d249 for .NET

19 0.432 Copyright (C) Microsoft Corporation. All rights reserved.

19 0.432

19 0.837 /usr/share/dotnet/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(241,5): error MSB4018: The "ResolvePackageAssets" task failed unexpectedly. [/source/BasicService/BasicService.csproj]

19 0.837 /usr/share/dotnet/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(241,5): error MSB4018: NuGet.Packaging.Core.PackagingException: Unable to find fallback package folder 'C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages'. [/source/BasicService/BasicService.csproj]

19 0.837 /usr/share/dotnet/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(241,5): error MSB4018: at NuGet.Packaging.FallbackPackagePathResolver..ctor(String userPackageFolder, IEnumerable1 fallbackPackageFolders) [/source/BasicService/BasicService.csproj] #19 0.837 /usr/share/dotnet/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(241,5): error MSB4018: at Microsoft.NET.Build.Tasks.NuGetPackageResolver..ctor(String userPackageFolder, IEnumerable1 fallbackPackageFolders) [/source/BasicService/BasicService.csproj]

19 0.837 /usr/share/dotnet/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(241,5): error MSB4018: at Microsoft.NET.Build.Tasks.NuGetPackageResolver.CreateResolver(IEnumerable`1 packageFolders) [/source/BasicService/BasicService.csproj]

19 0.837 /usr/share/dotnet/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(241,5): error MSB4018: at Microsoft.NET.Build.Tasks.NuGetPackageResolver.CreateResolver(LockFile lockFile) [/source/BasicService/BasicService.csproj]

19 0.837 /usr/share/dotnet/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(241,5): error MSB4018: at Microsoft.NET.Build.Tasks.ResolvePackageAssets.CacheWriter..ctor(ResolvePackageAssets task) [/source/BasicService/BasicService.csproj]

19 0.837 /usr/share/dotnet/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(241,5): error MSB4018: at Microsoft.NET.Build.Tasks.ResolvePackageAssets.CacheReader.CreateReaderFromDisk(ResolvePackageAssets task, Byte[] settingsHash) [/source/BasicService/BasicService.csproj]

19 0.837 /usr/share/dotnet/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(241,5): error MSB4018: at Microsoft.NET.Build.Tasks.ResolvePackageAssets.CacheReader..ctor(ResolvePackageAssets task) [/source/BasicService/BasicService.csproj]

19 0.837 /usr/share/dotnet/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(241,5): error MSB4018: at Microsoft.NET.Build.Tasks.ResolvePackageAssets.ReadItemGroups() [/source/BasicService/BasicService.csproj]

19 0.837 /usr/share/dotnet/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(241,5): error MSB4018: at Microsoft.NET.Build.Tasks.ResolvePackageAssets.ExecuteCore() [/source/BasicService/BasicService.csproj]

19 0.837 /usr/share/dotnet/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(241,5): error MSB4018: at Microsoft.NET.Build.Tasks.TaskBase.Execute() [/source/BasicService/BasicService.csproj]

19 0.837 /usr/share/dotnet/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(241,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() [/source/BasicService/BasicService.csproj]

19 0.837 /usr/share/dotnet/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(241,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask) [/source/BasicService/BasicService.csproj]

dotnet-issue-labeler[bot] commented 3 years ago

I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label.

MichaelSimons commented 3 years ago

We've talked about the dotnet new dockerfile scenario in the past. It would be useful but it has been a question of return on investment ROI. Transferring to @richlander and @mthalman to ponder.

richlander commented 3 years ago

I guess ... we have a template for .gitignore. At the very least, we should have one for for .dockerignore, too. Fair?

CarlSargunar commented 1 year ago

Pinging this as I would love to see a template for "dotnet new dockerfile"

Or at least a good reason other than ROI for not having it? What would be the effort required to create it? Is it something that the community can contribute?