2015-12-23 35 views
2

我想解决我认为是运行微服务的常见用例。在这种情况下,我正在使用Spring云应用程序测试领事。我试图用两种不同的方式来测试领事。其中第一个运行在Docker容器中,另一个运行在Docker主机上。然后,我试图启动一个春季云容器,可以与任何一个领事例子交谈。作为Docker容器运行时,Java Spring不会与Consul通信

当Spring云应用程序作为码头容器运行时,我一直无法使春季云应用程序与领事谈话。当Spring云应用程序以主机联网模式运行时,它可以解析localhost端口,但如果我希望运行多个图像实例,这不是一个可接受的解决方案。

将两种服务作为容器运行时,我的泊坞窗撰写文件的示例如下所示。在这里,我试图通过环境变量设置春季云中的consul uri,但一直无法使用各种配置使其工作。如果任何人都可以指出这些功能一起工作的例子,那将非常有用。

consul1: 
    image: progrium/consul 
    ports: 
    - "8400:8400" 
    - "8500:8500" 
    - "8600:53/udp" 
    - "8600:53/tcp" 
    environment: 
     GOMAXPROCS: 100 
     entrypoint: "/bin/consul" 
     hostname: consul 
     command: agent -log-level=debug -server -config-dir=/config -bootstrap -ui-dir /ui 

simpletest: 
    build: simpletest 
    hostname: simpletest 
    environment: 
     JAVA_OPTS: "-Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n -Dspring.cloud.consul.host=consul1" 
    ports: 
    - 39041:7051 
    - 39052:7055 
#  d2fdockerroot_consul1_1 consul 
# links: 
#  - consul1 
+0

这应该工作,一旦启用了'链接: - consul1'部分,因为在SimpleTest的容器的'在/ etc/hosts'这样的条目结果它将'consul1'主机名解析为consul1容器的docker-internal IP。你可以单独测试,也许你的JAVA_OPTS没有被使用(通过一些脚本来设置这些参数)? – zapl

回答

3

在这里你有一个啤酒厂系统的例子 - https://github.com/spring-cloud-samples/brewery。其中一个文件是CONSUL的docker-compose文件。

https://github.com/spring-cloud-samples/brewery/blob/master/docker-compose-CONSUL.yml

检查所有application-consul.yaml文件,这些文件的代码库里面看到如何设置Spring的引导应用交谈领事。

例子:https://github.com/spring-cloud-samples/brewery/blob/master/aggregating/src/main/resources/application-consul.yaml

在任何问题时写在这里或者去春云小胶质https://gitter.im/spring-cloud/spring-cloud

+0

这非常有用。使用该功能,我可以通过在环境“spring.cloud.consul.host:discovery”中进行设置来修改我的示例以指定consul url,这显然对于此实例足够了。 – Mimyck

0

我有完全相同的问题:链接到我的领事容器是不够的。但是,下面是为我做的:如here所述,相应的领事主机和端口配置需要放在bootstrap.yml中,而不是application.yml

spring: 
    cloud: 
    consul: 
     host: consul 
     port: 8500 

与相应docker-compose.yml

version: "2.0" 

services: 
    consul: 
    image: consul:latest 
    ports: 
     - "8500:8500" 
my-service: 
    build: path/to/dockerfile 
    depends_on: 
     - consul 
    links: 
     - consul:consul