了解docker中的ENTRYPOINT

我将把我的asp.net核心1.0代码从Windows环境推送到远程Linux docker容器。 基本上容器将作为服务器托pipe应用程序。

现在我在不同的博客中看到了ENTRYPOINT的不同configuration。

  1. ENTRYPOINT ["./kestrel"]在http://blog.dudak.me/2015/deploying-aspnet-5-applications-to-docker-containers/
  2. ENTRYPOINT ["dnx", "-p", "project.json", "web"] at 不能从docker运行asp.net 5
  3. ENTRYPOINT ["dnx", "./src/HelloMvc6", "kestrel"]在https://alexanderzeitler.com/articles/Running-ASP.NET-5-beta4-in-Docker-with-DNX-runtime/
  4. ENTRYPOINT ["./web"]如果使用http://www.hanselman.com/blog/PublishingAnASPNET5AppToDockerOnLinuxWithVisualStudio.aspx

我是docker工人。 我不知道这些差异,也不确定哪一个可以使用。

这些是来自project.json各种命令或调用project.json命令的脚本。

如果您查看一个project.json文件,您将看到如下所示的命令列表:

 "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调用dnx

-p传递给dnx指定要运行的项目。 在较新版本的dnx您不需要-p ; 而是传递的第一个参数是项目path。

所以,在你的情况下:

  1. ENTRYPOINT ["./kestrel"]是调用dnx . kestrel的脚本dnx . kestrel dnx . kestreldnx kestrel
  2. ENTRYPOINT ["dnx", "-p", "project.json", "web"]用参数-p project.json web (web命令)调用dnx
  3. ENTRYPOINT ["dnx", "./src/HelloMvc6", "kestrel"]与2相同,但ENTRYPOINT ["dnx", "./src/HelloMvc6", "kestrel"]命令。
  4. ENTRYPOINT ["./web"]与1相同,调用调用web命令的脚本。