鍍金池/ 問(wèn)答/Java  Linux/ 基于Spring cloud的微服務(wù)應(yīng)用部署到docker中,通過(guò)ribbon/

基于Spring cloud的微服務(wù)應(yīng)用部署到docker中,通過(guò)ribbon/zuul不能訪問(wèn)?

在本地調(diào)試spring cloud微服務(wù)應(yīng)用,應(yīng)用可以注冊(cè)到eureka上,應(yīng)用可以通過(guò)ribbon或者zuul訪問(wèn)。并且在eureka上可以看到應(yīng)用所對(duì)應(yīng)的ip地址。

當(dāng)部署到docker后,eureka不能讀取應(yīng)用所在ip地址,并且通過(guò)ribbon/zuul等也不能訪問(wèn)應(yīng)用,報(bào)錯(cuò)如下,想請(qǐng)問(wèn)怎么辦?

I/O error on GET request for "http://API-ADMIN/microservice/1": 280d0f4200d8; nested exception is java.net.UnknownHostException: 280d0f4200d8

已在應(yīng)用中配置ip地址,但是在docker環(huán)境中不可以,畢竟docker是獨(dú)立的環(huán)境

eureka:
  instance:
    prefer-ip-address: true
回答
編輯回答
傻叼

原因:

分布在三臺(tái)機(jī)器的docker鏡像,它們的ip分別是鏡像中的ip,故是不能互相想問(wèn)。

解決方法:

利用Docker Swarm,配置網(wǎng)絡(luò)。以下鏈接是一個(gè)具體方法。

http://blog.csdn.net/alaska_b...

當(dāng)然,也可以用K8s等工具解決。但是其本質(zhì)問(wèn)題是網(wǎng)絡(luò)不通造成的。

2018年5月23日 08:24