Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
使用swarm将Spring云应用部署到docker集群_Docker_Docker Compose_Spring Cloud - Fatal编程技术网

使用swarm将Spring云应用部署到docker集群

使用swarm将Spring云应用部署到docker集群,docker,docker-compose,spring-cloud,Docker,Docker Compose,Spring Cloud,我知道这个问题听起来很模糊,但我会尽力解释我的问题陈述 我有一个Spring云应用程序(使用Netflix Eureka作为服务发现),具有多个服务,它们部署在docker容器中,容器使用docker compose链接和旋转,单容器部署一切正常,但问题是自动扩展单个服务/容器,即拥有单个服务的多个容器,因为我的容器与端口绑定,所以docker compose scale将不起作用 我在谷歌上搜索过,发现我可以使用负载均衡器和具有不同端口的容器来提供服务,但我不希望这样,因为我使用的是客户端负载

我知道这个问题听起来很模糊,但我会尽力解释我的问题陈述

我有一个Spring云应用程序(使用Netflix Eureka作为服务发现),具有多个服务,它们部署在docker容器中,容器使用docker compose链接和旋转,单容器部署一切正常,但问题是自动扩展单个服务/容器,即拥有单个服务的多个容器,因为我的容器与端口绑定,所以docker compose scale将不起作用

我在谷歌上搜索过,发现我可以使用负载均衡器和具有不同端口的容器来提供服务,但我不希望这样,因为我使用的是客户端负载平衡


有人能建议我如何为一项服务自动旋转多个容器吗?请记住,容器可以使用其服务名称相互通信。

回答我的问题可能会对某人有所帮助

由于我使用的是Spring Cloud,因此服务通过提供服务名称向Eureka注册,因此将公共端口绑定到容器是没有意义的,因此我使用下面的docker compose文件来实现扩展,不过可能有更好的方法来实现,但目前它对我有效

version: '2'
services:
 eureka:
  image: eureka
  container_name: eureka
  ports: 
  - "8761:8761"

zuul:
image: zuul
container_name: zuul
ports:
  - "8080"
depends_on:
  - eureka

webapp:
image: web-app
ports:
  - "6001"
depends_on:
  - eureka

writer:
image: writer
ports:
  - "7001"
depends_on:
  - eureka

recorder:
image: recorder
ports:
  - "9001"
depends_on:
  - eureka
  - mongodb

mongodb:
image: mongo:latest
command: mongod --noprealloc --smallfiles --dbpath /data/db --nojournal --oplogSize 16 --noauth
ports:
  - "27017:27017"
environment:
  TERM: xterm
volumes:
  - /home/user/data/mongo:/data/db

PS:yaml没有在上面格式化。

如果您使用的是Eureka,为什么容器使用的是哪个端口,甚至是主机?它将在Eureka注册并使用相同的服务名称,然后其他服务可以使用Eureka查找该服务的所有地址。@RyanBaxter,你是对的,我们可以这样做,但我一直在寻找一种方法来实现这一点,使用docker compose和swarmI知道如果你将容器链接在一起,链接容器的主机名将放在主机文件中,但这不是eureka提供的sam was服务发现。Hi@Apollo有了这一更改,你可以使用say?@Tatha从zuul路由到web应用程序吗,以上配置用于链接docker容器并支持在同一台机器上旋转多个容器,有关路由配置,请参阅