2017-10-06 73 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