了解docker中的ENTRYPOINT

3 docker asp.net-core

I am going to push my asp.net core 1.0 code from Windows environment to remote Linux docker container. Basically the container will host the application as the server.

Now I see the different configuration for ENTRYPOINT in different blogs.

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

我是码头工人的新手。我不知道其中的区别,也不知道可以使用哪一个。

Vic*_*aci 5

这些是来自 的各种命令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"
},
Run Code Online (Sandbox Code Playgroud)

此外,当您发布应用程序时,将生成带有命令名称的脚本。例如,对于kestreldnx 将生成kestrel(unix) 和kestrel.cmd(windows),它们只需dnx使用参数进行调用kestrel。

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

所以,就你而言:

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