了解docker中的ENTRYPOINT

时间:2016-04-02 13:27:08

标签: docker asp.net-core

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

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

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

    我是码头工人的新手。我不知道差异,也不确定可以使用哪种差异。

1 个答案:

答案 0 :(得分:4)

来自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(窗口),它们仅使用参数dnx调用kestrel

传递给-p

dnx指定要运行的项目。在较新版本的dnx中,您不需要-p;相反,传递的第一个参数是项目路径。

所以,在你的情况下:

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