在Docker容器上运行服务时,Eureka服务器无法发现客户端

时间:2019-11-29 16:56:01

标签: java spring-boot docker microservices

我正在尝试开发具有3个微服务,postgres数据库和eureka服务器以发现客户端的应用程序。在当地,所有作品都很完美。当我在Docker容器上部署服务时出现问题。每种服务一个容器,用于postgres和eureka。我在docker中创建一个网络并加入所有容器。问题是我应该怎么做才能在eureka服务器中发现我的微服务?如果有人需要帮助,我将提供更多详细信息以解决问题。 那是我的docker-compose

version: "3.7"
networks:
  default:
    name: microservices_nw
    driver: bridge
services:
  postgresService:
    image: postgres:latest
    container_name: postgres
    expose:
      - 5432
    volumes:
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
    environment:
      - POSTGRES_PASSWORD=xxx
      - POSTGRES_USER=xxx
      - POSTGRES_DB=work
    restart: unless-stopped
  # EUREKA SERVER#####
  eureka-server:
    image: eureka-server:latest
    container_name: eureka-server
    expose:
      - 8761
    restart: unless-stopped
  # APP*****************************************
  credit-microservice:
    image: credit-microservice:latest
    container_name: credit-microservice
    expose:
      - 8600
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://postgresService/work
      - SPRING_DATASOURCE_USERNAME=xxx
      - SPRING_DATASOURCE_PASSWORD=xxx
    restart: unless-stopped

  product-micorservice:
    image: product-microservice:latest
    container_name: product-micorservice
    expose:
      - 8080
    environment:
        - SPRING_DATASOURCE_URL=jdbc:postgresql://postgresService/work
        - SPRING_DATASOURCE_USERNAME=xxx
        - SPRING_DATASOURCE_PASSWORD=xxx
    restart: unless-stopped

  customer-microservice:
    image: customer-microservice:latest
    container_name: customer-microservice
    expose:
      - 8081
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://postgresService/work
      - SPRING_DATASOURCE_USERNAME=xxx
      - SPRING_DATASOURCE_PASSWORD=xxx
      - EUREKA_INSTANCE_PREFER_IP_ADDRESS=true
      - EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://eureka-server/eureka
    depends_on:
      - eureka-server
    restart: unless-stopped

用于客户微服务的Dockerfile

FROM openjdk:8
ADD target/customer-service.jar customer-service.jar
EXPOSE 8081
CMD java -jar customer-service.jar

产品微服务的Dockerfile

FROM openjdk:8
ADD target/product-service.jar product-service.jar
EXPOSE 8080
CMD java -jar product-service.jar

用于eureka服务器的Dockerfile

FROM openjdk:8
ADD target/eureka-server.jar eureka-server.jar
EXPOSE 8761
ENTRYPOINT ["java", "-jar", "eureka-server.jar"]

信用微服务的Dockerfile

FROM openjdk:8-jre
ADD target/credit-service.jar credit-service.jar
EXPOSE 8600
ENTRYPOINT ["java","-jar", "credit-service.jar"]

还有用于客户服务的application.yml

server:
  port: 8081

eureka:
  client:
    service-url:
      default-zone: ${EUREKA_SERVER:http://localhost:8761/eureka}

  ## PostgreSQL
spring:
  application:
    name: customer-service
  datasource:
    driver-class-name: org.postgresql.Driver
    url: jdbc:postgresql://localhost:5432/work
    username: xxx
    password: xxx
  jpa:
    hibernate.ddl-auto: validate
    properties:
      hibernate.jdbc.lob.non_contextual_creation: true

0 个答案:

没有答案