生产代码和端口

我试图了解在生产环境中通常会做什么。

说我有一个angular/芒戈/快递应用程序,即时通讯使用docker。 我将用端口80上的nginx或apache http启动静态资源到客户端。 节点和快递的web服务将在一个容器中一起暴露在端口8080上.mongo实例将在8080以及它自己的容器中链接和暴露。 接下来,我将映射主机在Linux中的容器的IP。 要使用Web服务,我将使用$ http或angular度为4的可观察值调用express服务器。 这将打电话来表示将它发送到mongo实例。 端口80是唯一暴露给客户端的东西,因为你不想让它们指定一个特定的端口(例如www.clienturl.com:9037)。 从端口80获得静态资源,然后根据需要调用在其他端口上运行的Web服务。

这有点正确吗? 我对所有端口如何关联感到困惑。

我不知道我的问题是正确的,但如果你想在生产中使用docker(我只是谈论docker独自,没有任何编排),那么我的build议是安装一个传统的(或为什么不dockerized)代理服务器(Nginx例如),并通过它暴露您的docker服务。

例如,如果在两个不同的Docker容器中有两个Web服务,则可以将它们公开到端口8080和8081.然后,通过一个简单的configuration,您可以将端口80上的请求发送到您的服务器(代理正在侦听)基于主机名(基于经典名称的虚拟主机)。

这是我能想到的最简单的方法之一,以便在没有编排器的情况下在“制作”中使用docker。