簡體   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