当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
# 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 楼答案
我遇到了完全相同的问题:链接到我的领事容器是不够的。然而,以下内容为我做了:如前所述here,相应的领事主机和端口配置需要放在
bootstrap.yml
中,而不是application.yml
与相应的
docker-compose.yml