2015-12-23 71 views
2

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

這應該工作,一旦啓用了'鏈接: - consul1'部分,因爲在SimpleTest的容器的'在/ etc/hosts'這樣的條目結果它將'consul1'主機名解析爲consul1容器的docker-internal IP。你可以單獨測試,也許你的JAVA_OPTS沒有被使用(通過一些腳本來設置這些參數)? – zapl

回答

3

在這裏你有一個啤酒廠系統的例子 - https://github.com/spring-cloud-samples/brewery。其中一個文件是CONSUL的docker-compose文件。

https://github.com/spring-cloud-samples/brewery/blob/master/docker-compose-CONSUL.yml

檢查所有application-consul.yaml文件,這些文件的代碼庫裏面看到如何設置Spring的引導應用交談領事。

例子:https://github.com/spring-cloud-samples/brewery/blob/master/aggregating/src/main/resources/application-consul.yaml

在任何問題時寫在這裏或者去春雲小膠質https://gitter.im/spring-cloud/spring-cloud

+0

這非常有用。使用該功能,我可以通過在環境「spring.cloud.consul.host:discovery」中進行設置來修改我的示例以指定consul url,這顯然對於此實例足夠了。 – Mimyck

0

我有完全相同的問題:鏈接到我的領事容器是不夠的。但是,下面是爲我做的:如here所述,相應的領事主機和端口配置需要放在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 
相關問題