我正在尝试解决我认为运行微服务的常见用例。在这种情况下,我正在使用 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