Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/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
当作为Docker容器运行时,JavaSpring不会与Consor对话_Java_Docker_Spring Cloud_Microservices_Consul - Fatal编程技术网

当作为Docker容器运行时,JavaSpring不会与Consor对话

当作为Docker容器运行时,JavaSpring不会与Consor对话,java,docker,spring-cloud,microservices,consul,Java,Docker,Spring Cloud,Microservices,Consul,我试图解决我认为运行微服务的常见用例。在本例中,我正在使用spring云应用程序测试Concur。我试着用两种不同的方式来测试领事。第一个在docker容器中运行,另一个在docker主机上运行。然后我尝试启动一个SpringCloud容器,它将与任何一个Consor示例进行对话 当SpringCloud应用程序作为docker容器运行时,我无法让SpringCloud应用程序与Concur对话。当spring云应用程序以主机网络模式运行时,它可以解析本地主机端口,但如果我希望运行映像的多个实例

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

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

下面是我的docker compose文件的一个示例,它以容器的形式运行这两个服务。在这里,我试图通过环境变量在SpringCloud中设置ConsourURI,但无法使用各种配置使其工作。如果有人能举一个例子,说明这些函数是如何协同工作的,那将非常有帮助

 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

这里有一个酿酒厂系统的例子-。其中一个文件是领事的docker撰写文件

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

例如:


如果有任何问题,请写在这里或转到spring cloud gitter,我遇到了完全相同的问题:链接到我的领事容器是不够的。但是,下面是为我做的:如上所述,相应的concur主机和端口配置需要放在
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

这非常有用。通过使用它,我可以修改我的示例,通过在环境“spring.cloud.consul.host:discovery”下设置来指定领事url对于这个实例来说,这显然已经足够了。一旦您启用了
链接:-consul1
部分,就应该可以工作了,因为这会在simpletest容器的
/etc/hosts
中产生一个条目,所以它会将
consul1
主机名解析为consul1容器的docker内部ip。您可以单独进行测试,也许您的JAVA_选项没有被某些脚本用来设置这些参数?谢谢!遇到了同样的问题,添加bootstrap.yml解决了我的问题。