Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在Docker Swarm的端口80和不同主机名上运行两个单独的应用程序吗?_Docker_Haproxy_Docker Swarm_Docker Ucp - Fatal编程技术网

我可以在Docker Swarm的端口80和不同主机名上运行两个单独的应用程序吗?

我可以在Docker Swarm的端口80和不同主机名上运行两个单独的应用程序吗?,docker,haproxy,docker-swarm,docker-ucp,Docker,Haproxy,Docker Swarm,Docker Ucp,有了1.12中令人兴奋的新Docker Swarm,似乎很有可能在服务器集群中部署多个应用程序 我正在寻找在同一端口和同一集群上部署两个独立应用程序或应用程序入口点的方法。考虑以下事项: web.myservice.com:80 -> Swarm -> Service[web] -> web.1 -> web.2

有了1.12中令人兴奋的新Docker Swarm,似乎很有可能在服务器集群中部署多个应用程序

我正在寻找在同一端口和同一集群上部署两个独立应用程序或应用程序入口点的方法。考虑以下事项:

    web.myservice.com:80 -> Swarm ->     Service[web] -> web.1
                                                      -> web.2
                                                      -> web.3

backend.myservice.com:80 -> Swarm -> Service[backend] -> backend.1
                                                      -> backend.2
                                                      -> backend.3
在这种情况下,swarm只在一个多主机集群中运行,暴露端口80。我想您可以公开不同的端口,并设置负载平衡器以将代理传递到另一个端口,但我想说的是,有可能只公开集群中的hostname:port,这将是非常好的,因此,如果请求来自主机名和端口,它将被转发。如果需要多个主机或端口,可以公开多个

这可能是可行的,这就是为什么我问这个问题。也许它可以通过HAProxy或Nginx的一些高级配置进行复制。我已经做了很多实验,发现很难让它扩展。如果您有任何意见或建议,请就此主题提供建议


--Marcus

发布端口时,它会绑定到节点的网络接口。 您可以通过使用放置约束来实现这一点,以确保来自两个服务的任务永远不在同一个节点上,但我认为最好使用nginx服务为您代理流量

Swarm为您的服务创建DNS条目,以便您可以通过名称轻松访问它们,一个简单的nginx示例如下:

http {
...
  server {
    server_name web.myservice.com;

    location / {
      proxy_pass http://web:8080;
      proxy_redirect default;
    }
  }

  server {
    server_name backend.myservice.com;

    location / {
      proxy_pass http://backend:8080;
      proxy_redirect default;
    }
  }
}