我想解决我认为是运行微服务的常见用例。在这种情况下,我正在使用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
这应该工作,一旦启用了'链接: - consul1'部分,因为在SimpleTest的容器的'在/ etc/hosts'这样的条目结果它将'consul1'主机名解析为consul1容器的docker-internal IP。你可以单独测试,也许你的JAVA_OPTS没有被使用(通过一些脚本来设置这些参数)? – zapl