1

currency-conversion と currency-exchange の 2 つのサービスがあります。 Eureka サーバーは 1 つです。

ローカル マシンでは、サービスは正常に動作しています。通常は eureka サーバーを使用して他のサービス メソッドを使用しますが、docker では、ホワイト ラベル エラー 500 が表示されます。


Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback

There was an unexpected error (type=Internal Server Error status=500)

eurekaサーバーでdocker-composeを使用しています.2つのサービスはOKを示しています(それぞれの単純なエンドポイントでも接続されています)。それらを接続するエンドポイントを使用しようとするとエラーが表示されます。

これが私のdocker-composeです:


version: '3.7'

services:
  currency-exchange:
    image:  thiagoandradeit/microservicosin28minutes-currency-exchange-service:0.0.1-SNAPSHOT
    mem_limit: 700m
    ports:
      - "8000:8000"
    networks:
      - currency-exchange
    depends_on:
      - naming-server
    environment:
      EUREKA.CLIENT.SERVICE-URL.DEFAULTZONE: http://naming-server:8761/eureka
      
      
  currency-conversion:
    image:  thiagoandradeit/microservicosin28minutes-currency-conversion-service:0.0.1-SNAPSHOT
    mem_limit: 700m
    ports:
      - "8100:8100"
    networks:
      - currency-exchange
    depends_on:
      - naming-server
    environment:
      EUREKA.CLIENT.SERVICE-URL.DEFAULTZONE: http://naming-server:8761/eureka
           
  
      
  naming-server:
    image:  thiagoandradeit/microservicosin28minutes-naming-server:0.0.1-SNAPSHOT
    mem_limit: 700m
    ports:
      - "8761:8761"
    networks:
      - currency-exchange
      
 
      
networks:
  currency-exchange:

私のopenfeign動的クラス:



@FeignClient(name="currency-exchange")
public interface CurrencyExchangeProxy {
    
    @GetMapping("/currency-exchange/from/{from}/to/{to}")
    public CurrencyConversion retrieveExchangeValue(@PathVariable String from,@PathVariable String to);

}

通貨交換サービスによる通貨換算を使用しようとしたときに表示されるログの一部を次に示します。


currency-conversion_1  | 2021-03-15 18:59:33.696  WARN [currency-conversion,838d12e2c7e9960f,838d12e2c7e9960f] 1 --- [nio-8100-exec-6] .c.RetryAwareServiceInstanceListSupplier : No instances found after removing previously used service instance from the search ([EurekaServiceInstance@46ba90bd instance = InstanceInfo [instanceId = cc938ed0474f:currency-exchange:8000, appName = CURRENCY-EXCHANGE, hostName = localhost, status = UP, ipAddr = 172.19.0.6, port = 8000, securePort = 443, dataCenterInfo = com.netflix.appinfo.MyDataCenterInfo@46b93bf4]). Returning all found instances.
currency-conversion_1  | 2021-03-15 18:59:33.700 ERROR [currency-conversion,,] 1 --- [nio-8100-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is feign.RetryableException: Connection refused (Connection refused) executing GET http://currency-exchange/currency-exchange/from/USD/to/INR] with root cause
currency-conversion_1  |
currency-conversion_1  | java.net.ConnectException: Connection refused (Connection refused)
currency-conversion_1  |        at java.base/java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:na]
currency-conversion_1  |        at java.base/java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) ~[na:na]
currency-conversion_1  |        at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) ~[na:na]
currency-conversion_1  |        at java.base/java.net.AbstractPlainSocketImpl.connect(Unknown Source) ~[na:na]
currency-conversion_1  |        at java.base/java.net.Socket.connect(Unknown Source) ~[na:na]
currency-conversion_1  |        at java.base/sun.net.NetworkClient.doConnect(Unknown Source) ~[na:na]
currency-conversion_1  |        at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source) ~[na:na]
currency-conversion_1  |        at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source) ~[na:na]
currency-conversion_1  |        at java.base/sun.net.www.http.HttpClient.(Unknown Source) ~[na:na]
currency-conversion_1  |        at java.base/sun.net.www.http.HttpClient.New(Unknown Source) ~[na:na]
currency-conversion_1  |        at java.base/sun.net.www.http.HttpClient.New(Unknown Source) ~[na:na]
currency-conversion_1  |        at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) ~[na:na]
currency-conversion_1  |        at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source) ~[na:na]
currency-conversion_1  |        at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) ~[na:na]
currency-conversion_1  |        at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) ~[na:na]
currency-conversion_1  |        at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source) ~[na:na]
currency-conversion_1  |        at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) ~[na:na]
currency-conversion_1  |        at java.base/java.net.HttpURLConnection.getResponseCode(Unknown Source) ~[na:na]
currency-conversion_1  |        at feign.Client$Default.convertResponse(Client.java:108) ~[feign-core-10.10.1.jar:na]
currency-conversion_1  |        at feign.Client$Default.execute(Client.java:104) ~[feign-core-10.10.1.jar:na]
currency-conversion_1  |        at org.springframework.cloud.sleuth.instrument.web.client.feign.TracingFeignClient.execute(TracingFeignClient.java:79) ~[spring-cloud-sleuth-instrumentation-3.0.1.jar:3.0.1]
currency-conversion_1  |        at org.springframework.cloud.sleuth.instrument.web.client.feign.LazyTracingFeignClient.execute(LazyTracingFeignClient.java:62) ~[spring-cloud-sleuth-instrumentation-3.0.1.jar:3.0.1]
currency-conversion_1  |        at org.springframework.cloud.openfeign.loadbalancer.LoadBalancerUtils.executeWithLoadBalancerLifecycleProcessing(LoadBalancerUtils.java:56) ~[spring-cloud-openfeign-core-3.0.1.jar:3.0.1]
currency-conversion_1  |        at org.springframework.cloud.openfeign.loadbalancer.RetryableFeignBlockingLoadBalancerClient.lambda$execute$2(RetryableFeignBlockingLoadBalancerClient.java:156) ~[spring-cloud-openfeign-core-3.0.1.jar:3.0.1]

Docker で使用している URL をいくつか示します (ローカル マシンでは、すべて正常に動作します)。


http://localhost:8000/currency-exchange/from/USD/to/INR (currency exchange only - 
works fine with docker and eureka server)

http://localhost:8100/test (currency conversion only - works fine with docker and eureka server)

http://localhost:8100/currency-conversion-feign/from/USD/to/INR/quantity/10 (currency exchange consume currency conversion with openfeign - NOT WORKING with docker and eureka server, but works fine without docker)

私の通貨両替 application.properties

私の通貨両替 application.properties

    spring.application.name=通貨交換
    server.port=8000
    
    spring.jpa.show-sql=true
    spring.datasource.url=jdbc:h2:mem:testdb
    spring.h2.console.enabled=true
    
    # このプロパティは docker-compose によって上書きされます
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka
    
    #多分これは上書きじゃない?
    eureka.instance.hostname=localhost

私の通貨換算 application.properties

    spring.application.name=通貨換算
    server.port=8100
    
    #外貨両替と同じ
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka
    
    eureka.instance.hostname=localhost

私のエウレカサーバー

    spring.application.name=ネーミングサーバー
    server.port=8761
    
    eureka.client.register-with-eureka=false
    eureka.client.fetch-registry=false

私は docker と spring-cloud が初めてです。彼らはお互いの名前を見つけていないと思います。しかし、docker-compose にも eureka の URL を設定しました。何ができるかわかりません。

4

0 に答える 0