2017-10-06 72 views
0

我想安装一个微服务部署(部署文件在https://github.com/mojlighetsministeriet/groups/blob/master/docker-compose.example.yml)与几个服务将使用HTTP(希望稍后HTTPS)通信内部没有暴露在网络之外。我稍后将添加一个代理服务,将公开特定的功能。我想这样做,特别是与码头工人群模式,我喜欢的可能性来定义一个码头工人,compose.yml部署这样我就可以启动:码头群模式,内部运行多个服务具有独特的域名,但每个端口80

$ docker stack deploy my-platform -c docker-compose.example.yml 

我想国内的API网址是像GET http://identity-provider/public-key和GET http://groups/b0c44674-58e0-4a8a-87e0-e1de35088964。我之前已经使用Kubernetes设置完成了这个任务,并且效果很好,但现在我想用docker swarm模式实现这一点。

DNS部分没有任何问题,但docker swarm模式不允许我让每个服务都在端口80上监听(稍后会是443)。即使每个服务都具有唯一的域名(如身份提供者或组等),它也会不断抱怨端口冲突。

我应该使用特定的网络驱动程序来实现它吗?我目前使用覆盖。

使用没有随机端口的域名会使服务之间的呼叫更容易记住。 http://identity-provider:1234http://groups:1235,端口只会增加设置的复杂性。

我很好,使用任何超级尖端版本的码头ce,如果这有助于某种方式。

这应该是可以吧?

回答

1

Docker Swarm根据发布的端口路由传入的请求,在一个Swarm中不能有两个具有相同端口号的应用程序。

+0

我猜我认为这将是可能的,因为每个服务都有一个唯一的DNS记录我假设每个服务也有一个唯一的IP,因此将允许多​​个服务发布在相同的端口但具有不同的IP地址。 – Tirithen