我要将我的 asp.net core 1.0 代码从 Windows 环境推送到远程 Linux docker 容器。基本上容器将作为服务器托管应用程序。
现在我在不同的博客中看到了 ENTRYPOINT 的不同配置。
ENTRYPOINT ["./kestrel"]
位于 http://blog.dudak.me/2015/deploying-aspnet-5-applications-to-docker-containers/ENTRYPOINT ["dnx", "-p", "project.json", "web"]
位于 Cannot run asp.net 5 from dockerENTRYPOINT ["dnx", "./src/HelloMvc6", "kestrel"]
位于 https://alexanderzeitler.com/articles/Running-ASP.NET-5-beta4-in-Docker-with-DNX-runtime/ENTRYPOINT ["./web"]
如果使用 http://www.hanselman.com/blog/PublishingAnASPNET5AppToDockerOnLinuxWithVisualStudio.aspx
我是 docker 的新手。我不知道其中的差异,也不确定可以使用哪一个。
最佳答案
这些是来自 project.json
的各种命令或调用 project.json
中命令的脚本。
如果你看a project.json file您将看到一个命令列表,例如:
"commands": {
"gen": "Microsoft.Extensions.CodeGeneration",
"run": "run server.urls=http://localhost:5003",
"web": "Microsoft.AspNet.Server.Kestrel",
"kestrel": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.Kestrel --server.urls http://localhost:5004",
"weblistener": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5002"
},
此外,当您发布应用程序时,将生成带有命令名称的脚本。例如,对于 kestrel
dnx 将生成 kestrel
(unix) 和 kestrel.cmd
(windows),后者仅调用 dnx
> 带有参数 kestrel
。
dnx
的 -p
指定要运行的项目。在较新版本的 dnx
中,您不需要 -p
;相反,传递的第一个参数是项目路径。
所以,就你的情况而言:
ENTRYPOINT ["./kestrel"]
是调用dnx 的脚本。 kestrel
或dnx kestrel
。ENTRYPOINT ["dnx", "-p", "project.json", "web"]
使用参数-p project 调用
(Web 命令)。dnx
。 json webENTRYPOINT ["dnx", "./src/HelloMvc6", "kestrel"]
与 2 相同,但使用kestrel
命令。ENTRYPOINT ["./web"]
与 1 相同,调用调用web
命令的脚本。
关于docker - 了解docker中的ENTRYPOINT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36373873/