有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

当Java Spring作为Docker容器运行时,它不会与Concur对话

我试图解决我认为运行微服务的常见用例。在本例中,我正在用spring云应用程序测试Concur。我试着用两种不同的方式来测试领事。第一个在docker容器中运行,另一个在docker主机上运行。然后我尝试启动一个spring云容器,它将与任何一个Consor示例进行对话

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

下面是我的docker compose文件的一个示例,它以容器的形式运行这两个服务。在这里,我试图通过环境变量在spring cloud中设置Consour 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

共 (2) 个答案

  1. # 1 楼答案

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

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

    查看代码库中的所有application-consul.yaml文件,了解如何设置Spring引导应用程序与Consor对话

    例如: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

  2. # 2 楼答案

    我遇到了完全相同的问题:链接到我的领事容器是不够的。然而,以下内容为我做了:如前所述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