繁体   English   中英

将.NET Core Console应用程序构建到Docker中

[英]Build .NET Core Console Application into Docker

我使用Visual Studio 2017(RTM)创建了一个新的.NET Core Console应用程序。 然后添加了Docker支持并获得了docker文件+ compose文件就好了。 然而,它们几乎没有问题。

Docker撰写文件具有版本2,这使得构建失败到以下错误消息

Microsoft.DotNet.Docker.CommandLineClientException:客户端版本1.22太旧了。 支持的最低API版本为1.24,请将您的客户端升级到更新版本。

这可以通过手动将撰写文件版本更改为2.1来解决。 (不确定是否有效修复)然后你会收到另一条错误消息

MSB4006目标依赖关系图中存在循环依赖关系,涉及目标“DockerCleanServiceReferences”。

这我不知道如何解决。 我知道错误消息是由于某些配置导致循环引用(例如,构建后的构建事件)

那么,如何手动将.NET Core控制台应用程序打包到docker容器中的任何资源或技巧? 我刚刚开始了解Docker,所以不要以为我对此一无所知。

另一个问题是,在某些地方我可以获得这些Visual Studio模板的更新版本,还是这些已知问题?

你能否检查你的Docker for Windows是否针对Linux? 您可能是针对Windows容器,但.NET Core尚不支持。

事实证明,问题在于我的DockerFile,SLN文件和CSPROJ文件都在同一个文件夹中。 您知道在创建解决方案时,它会询问您是否要创建子目录吗? 如果不这样做 ,并且您的SLN和CSPROJ文件共享同一文件夹,则不可避免地会将Docker文件添加到同一文件夹中,从而创建循环引用。 如果您的SLN文件位于CSPROJ文件上方的目录中,则DockerFile等将使用SLN文件放入您的父目录,并且一切都会正常。 这解决了我。

在我第一次使用docker旋转VS2017时,使用默认模板,我遇到了同样的问题。 我参考了这篇文章 - https://blogs.msdn.microsoft.com/containerstuff/2017/03/13/visual-studio-2017-client-version-1-22-is-too-old/这是有用的对我来说 - 按照建议,在docker-compose项目的docker-compose.ci.build.yml中进行了这项更改:文件顶部的'version'参数设置为2 ,更改为2.1重复相同的更改项目中的其他文件包括:

泊坞窗,compose.yml

泊坞窗,compose.override.yml

泊坞窗,compose.vs.debug.yml

泊坞窗,compose.vs.release.yml

关于如何手动将.NET Core控制台应用程序打包到Docker镜像中的问题。 https://github.com/dotnet/dotnet-docker-samples旨在回答这个问题。 去看一下。 如果您遇到问题或有建议请记录一个问题( https://github.com/dotnet/dotnet-docker-samples/issues )。

谢谢你的帖子。 我们将“尽快”添加Nano Server容器工具。 在此之前,您可以使用Linux容器,这将提供类似的体验。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM