2

我正在尝试解决我认为运行微服务的常见用例。在这种情况下,我正在使用 spring 云应用程序测试 consul。我正在尝试以两种不同的方式测试领事。第一个在 docker 容器中运行,另一个在 docker 主机上运行。然后我试图启动一个将与任一领事示例交谈的弹簧云容器。

当spring cloud应用程序作为docker容器运行时,我无法让spring cloud应用程序与consul对话。当 Spring Cloud 应用程序以主机网络模式运行时,它可以解析 localhost 端口,但如果我希望运行图像的多个实例,这不是一个可接受的解决方案。

下面显示了将这两个服务作为容器运行时我的 docker compose 文件的示例。在这里,我试图通过环境变量在 spring cloud 中设置 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
4

2 回答 2

4

在这里,您有一个啤酒厂系统的示例 - 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 Boot 应用程序以与 consul 对话。

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

如果有任何问题写在这里或去 spring-cloud gitter https://gitter.im/spring-cloud/spring-cloud

于 2015-12-23T15:57:35.077 回答
2

我遇到了完全相同的问题:链接到我的 consul 容器是不够的。但是,以下为我做了:如here所述,需要将相应的consul主机和端口配置放在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
于 2017-03-26T15:16:10.577 回答