Dockerized Zuul Gateway не может подключиться к докеризованному серверу Eureka - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь создать файл docker-compose.yml, из которого я могу использовать загружаемые микросервисы загрузки Spring и подключать их к закрепленному реестру Eureka, но, похоже, проблема с обнаружением микросервисами реестра Eureka Server, несмотря на то, что мои микросервисы ранее подключались к серверу Eureka, в то время как из Eclipse работали только простые приложения .jar.

Сначала я попробовал докеризировать сервер Eureka и шлюз Zuul. Когда Eureka докеризуется и выполняется как контейнер (с помощью команды docker run -p 8761: 8761), к нему может получить доступ приложение весенней загрузки без докера Zuul gateway.

Когда я выполняю докеризацию и запускаю как контейнерный шлюз Zuul (с помощью docker run -p 8762: 8762), он не распознается на докеризованном сервере Eureka.

Кроме того, поскольку я понял, что может быть проблема с сетью докеров, я решил использовать для этого файл docker-compose и попытался соединить их, используя одну и ту же оверлейную сеть, но, похоже, снова не удалось ,

Кроме того, следует отметить, что когда сервер Eureka и шлюз Zuul докеризированы и работают как контейнеры, к ним можно получить доступ как из браузера, так и из почтальона, но они не видят друг друга.

Это мое приложение-сервис-реестр (сервер Eureka). Свойства

spring.application.name=service-registry
server.port=8761
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false


eureka.server.wait-time-in-ms-when-sync-empty=0

Это мой api-шлюз (Zuul gateway) соответствующее приложение. Свойства

server.port=8762
spring.application.name=api-gateway

#eureka.client.enabled=false

eureka.client.service-url.default-zone=http://service-registry:8761/eureka/

Это мой Dockerfile для службы регистрации (сервер Eureka)

FROM openjdk:8-jdk-alpine

ADD /target/service-registry-0.0.1-SNAPSHOT.jar service-registry.jar
ENTRYPOINT ["java", "-jar", "/service-registry.jar"]

EXPOSE 8761

Это мой Dockerfile для API-шлюза (Zuul gateway)

FROM openjdk:8-jdk-alpine

ADD target/api-gateway-0.0.1-SNAPSHOT.jar api-gateway.jar
ENTRYPOINT ["java", "-jar", "/api-gateway.jar"]

EXPOSE 8762

Это мой докер-compose.yml

version: '3'
services:
  service-registry:
    image: ftntim1/xml-booking:service-registry
    ports:
      - "8761:8761"
    networks:
      - megatravel-network

  api-gateway:
    image: ftntim1/xml-booking:api-gateway
    ports:
      - "8762:8762"
    links:
      - service-registry
    depends_on:
      - service-registry
    environment:
        EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://service-registry:8761/eureka
    networks:
      - megatravel-network

networks:
  megatravel-network:
    driver: overlay 

1 Ответ

0 голосов
/ 24 июня 2019

Как я увидел позже, похоже, мне нужно было только переключиться на верблюжью нотацию для конфигурации зоны по умолчанию в application.properties для прокси Zuul.

До этого было:

eureka.client.service-url.default-zone = http://service-registry:8761/eureka

При переключении на:

eureka.client.serviceUrl.defaultZone = ${EUREKA_URI:http://localhost:8761/eureka}

(да, localhost, не service-regitry)

.. он начал правильно подключаться.

Похоже, неоднозначное решение, поэтому я быожидайте, что кто-то из опытных в Spring Boot на SO прокомментирует эту ситуацию и подробно объяснит, что произошло.

...