启动时出现Dotnetcore容器错误,询问是否运行SDK命令

我正在创build一个简单的dotnetcore 2.0应用程序,我想对它进行容器化。 作为这个容器的想法将在部署上运行一次,以执行一些应用程序configuration任务。

目前,代码只是做这个…

class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } 

docker文件看起来像这样…

 FROM microsoft/dotnet:2.0-runtime ARG source WORKDIR /app COPY ${source:-obj/Docker/publish} . ENTRYPOINT ["dotnet", "consoleapp.dll"] 

我在Visual Studio 2017中打F5,通过执行容器所在的docker image ls命令可以看到。

然后我尝试运行该容器,如下所示:

docker run consoleapp: dev

我现在得到错误:

 Did you mean to run dotnet SDK commands? Please install dotnet SDK from: http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409 

我的想法是,因为我正在使用运行时的图像来build立我的图像,我应该能够以某种方式启动我的应用程序。 我猜这里的错误是,构成我的入口点的一部分的dotnet是dotnet SDK的一部分,因此不在我的基本映像中。

我应该将这个容器放在一个非运行时版本的dotnet核心上吗?

为什么你可以看到这个错误信息的一个原因是传递给dotnet的参数是未知的。

runtime无法识别您传递给它的参数,并怀疑您是否应该使用sdk

确保dll的名称和path正确:

 ENTRYPOINT ["dotnet", "consoleapp.dll"] 

另外,确保COPY指令按预期工作。

在你的例子中,它从obj/Docker/publish文件夹中obj/Docker/publish文件。 准备执行的输出应该从bin文件夹中出来。 如果您使用发布的版本,请确保在创build容器之前运行dotnet publish 。 或者在创build图像时恢复/构build/发布。

请记住,DLL将不得不完全在WORKDIR 。 在你的情况:/ app除非你提供的path到dotnet

我在Github上创build了一个基本的工作示例 :