我想解決我認爲是運行微服務的常見用例。在這種情況下,我正在使用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