Docker сеть не работает с eureka - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть один сервер eureka внутри контейнера docker и другое приложение внутри другого контейнера docker. Я создал сеть, используя docker network create eureka-s1. Итак, я запускаю сервер eureka с помощью команды: docker run --network eureka-s1 --name eureka-server -p 8761:8761 f595acb214d5 Файл конфигурации сервера eureka выглядит следующим образом:

spring:
  application:
    name: discovery-service

eureka:
  instance:
    prefer-ip-address:true
    hostname:localhost

  client:
    eureka-server-connect-timeout-seconds: 5
    enabled: true
    fetch-registry: false
    register-with-eureka: false

server:
  port: 8761

Итак, он работает нормально. Теперь, когда я запускаю свое приложение с помощью команды: docker run --network eureka-s1 --name first-service -p 8080:8080 c16b2442b890, приложение не регистрируется на eureka. Конфигурационный файл клиента выглядит следующим образом:

spring:
  application:
    name: first-service
server:
  port: 8080
eureka:
  client:
    fetch-registry: true
    serviceUrl:
      defaultZone: http://eureka-server:8761/eureka  

Может кто-то указать на проблему здесь? Спасибо.

Редактировать: Докер-файл Eureka Server:

FROM openjdk:8
ADD target/cloud-eureka-discovery-service-1.0.0-SNAPSHOT.jar cloud-eureka-discovery-service-1.0.0-SNAPSHOT.jar
EXPOSE 8761
ENTRYPOINT ["java", "-jar", "cloud-eureka-discovery-service-1.0.0-SNAPSHOT.jar"]

Док-файл клиента Eureka:

FROM openjdk:8
ADD target/first-service-0.0.1-SNAPSHOT.jar first-service-0.0.1-SNAPSHOT.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "first-service-0.0.1-SNAPSHOT.jar"]

1 Ответ

1 голос
/ 14 февраля 2020

Он отлично работает с docker -compose.

Ниже приведен docker -compose.yml

version: '2.1'

services:
  eureka:
    build: ${PATH_TO_EUREKA_FOLDER}
    mem_limit: 350m
    networks:
        - my-network
    healthcheck:
      test: ["CMD", "curl", "-f", "http://eureka:8761"]
      interval: 30s
      timeout: 10s
      retries: 5

  client:
    build: ${PATH_TO_YOUR_CLIENT_FOLDER}
    mem_limit: 350m
    networks:
      - my-network
    links:
      - eureka
    depends_on:
      eureka:
        condition: service_healthy


networks:
  my-network:
    name: my-network

И добавьте обновление вашего файла конфигурации клиента, как показано ниже:

spring:
    application:
        name: first-service
server:
    port: 8080
eureka:
    client:
        fetch-registry: true
        serviceUrl:
            defaultZone: http://eureka:8761/eureka

И обновите Dockerfile сервера eureka следующим образом:

FROM openjdk:8

RUN apt-get update
RUN apt-get install -y curl

EXPOSE 8761

ADD ./target/*.jar app.jar

ENTRYPOINT ["java","-jar","/app.jar"]

И рядом с docker -compose.yml запустите

docker-compose up --build

И не не забудьте запустить mvn clean и установить клиентское приложение.

...