【发布时间】:2018-03-17 23:03:50
【问题描述】:
我正在尝试设置一个微服务部署(https://github.com/mojlighetsministeriet/groups/blob/master/docker-compose.example.yml 的部署文件),其中包含多个服务,这些服务将使用 HTTP(希望稍后是 HTTPS)在内部进行通信,而不会暴露在网络之外。稍后我将添加一个代理服务,该服务将公开特定功能。我想专门使用 docker swarm 模式执行此操作,并且我喜欢在 docker-compose.yml 中定义部署的可能性,因此我可以启动:
$ docker stack deploy my-platform -c docker-compose.example.yml
我希望内部的 API url 类似于 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:1234 和 http://groups:1235,端口只会增加设置的复杂性。
如果有帮助的话,我可以使用任何超级尖端版本的 docker-ce。
这应该是可能的吧?
【问题讨论】:
标签: docker routing docker-compose microservices docker-swarm