我试图了解通常在生产环境中完成的操作。
假设我有一个angular / mongo / express应用程序并使用docker。我将在端口80上使用nginx或apache http all将静态资源启动到客户端。 node和express的web服务将放在端口8080上一起暴露的容器中.mongo实例将在8080以及它自己的容器中链接和公开。接下来,我会将linux框中的主机映射到容器的ip。要使用Web服务,我会使用$ http或者如果在可观察的角度4中调用快速服务器。这将使调用表达将其发送到mongo实例。端口80是唯一暴露给客户端的东西,因为您不希望它们指定特定端口(例如www.clienturl.com:9037)。从端口80给出静态资源,然后根据需要调用在其他端口上运行的web服务。
这有点正确吗?我对所有端口的相关性感到困惑。
答案 0 :(得分:0)
我不确定我的问题是否正确,但是如果你想在生产中使用docker(我只谈论docker,没有任何orchestrator)那么我的建议是安装一个传统的(或者为什么不是dockerized)代理服务器(例如nginx)并通过它公开您的docker服务。
例如,如果您在两个不同的docker容器中有2个Web服务,则可以将它们暴露给端口8080和8081.然后,通过简单的配置,您将路由到端口80(代理所在的服务器)的请求正在监听)基于主机名(基于经典名称的虚拟主机)。
这是我能想到的最简单的方法之一,以便在"生产"中使用docker。没有协调者。