启动时出现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了一个基本的工作示例 :