【问题标题】:Docker swarm mode, internally running several services with unique domain names but each on port 80Docker swarm 模式,内部运行多个具有唯一域名但每个都在端口 80 上的服务
【发布时间】: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:1234http://groups:1235,端口只会增加设置的复杂性。

如果有帮助的话,我可以使用任何超级尖端版本的 docker-ce。

这应该是可能的吧?

【问题讨论】:

    标签: docker routing docker-compose microservices docker-swarm


    【解决方案1】:

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

    【讨论】:

    • 我想我认为这是可能的,因为每个服务都有一个唯一的 DNS 记录IP 地址。
    猜你喜欢
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 2015-09-28
    • 2020-11-13
    • 1970-01-01
    • 2016-04-11
    相关资源
    最近更新 更多