Не отображается микросервис на другом сервере

117
23 августа 2021, 13:30

Возникла проблема с переходом с монолитного проекта на ммикросервисную архитектуру. Есть несколько сервисов которые будут распологаться на одном сервре и несколько других на другом. Пытаюсь реализовать это, но никак не получается. Сам dashboad работает некорректно. Сервисы которые были отключены отображатся UP. Это достаточно странно, поскольку при тестировании было все корректно. Как только начали использовать докер, неисправность возникла. Как правильно настроить интеграцию микросервисов в докере и еще к тому же на нескольких серверах?

Вот все сервисы:

version: '3.7'
services:
  eureka-server:
    build:
      context: ./eureka-server
    restart: always
    environment:
      DEBUG_LEVEL: INFO
    ports:
      - 8761:8761
    volumes:
      - /temp/eureka-server/logs:/usr/app/eureka-server/logs
  gateway-service:
    build:
      context: ./gateway-service
    restart: always
    environment:
      DEBUG_LEVEL: INFO
      EUREKA_URI: http://eureka-server:8761/eureka
    ports:
      - 8762:8762
    volumes:
      - /temp/gateway-service/logs:/usr/app/gateway-service/logs
    depends_on:
      - eureka-server
  microservice-location:
    build:
      context: ./microservice-location
    restart: always
    environment:
      DB_URL: file:/usr/app/h2/microservice_location
      DB_USER: ****
      DB_PASSWORD: *******
      DEBUG_LEVEL: INFO
      EUREKA_URI: http://eureka-server:8761/eureka
    volumes:
      - /temp/microservice-location/h2:/usr/app/h2/
      - /temp/microservice-location/logs:/usr/app/microservice-location/logs
    depends_on:
      - eureka-server
  microservice-profession:
    build:
      context: ./microservice-profession
    restart: always
    environment:
      DB_URL: file:/usr/app/h2/microservice_profession
      DB_USER: ******
      DB_PASSWORD: ******
      DEBUG_LEVEL: INFO
      EUREKA_URI: http://eureka-server:8761/eureka
    volumes:
      - /temp/microservice-profession/h2:/usr/app/h2/
      - /temp/microservice-profession/logs:/usr/app/microservice-profession/logs
    depends_on:
      - eureka-server
  microservice-education:
    build:
      context: ./microservice-education
    restart: always
    environment:
      DB_URL: file:/usr/app/h2/microservice_education
      DB_USER: ************          DB_PASSWORD: *******
      DEBUG_LEVEL: INFO
      EUREKA_URI: http://eureka-server:8761/eureka
    volumes:
      - /temp/microservice-education/h2:/usr/app/h2/
      - /temp/microservice-education/logs:/usr/app/microservice-education/logs
    depends_on:
      - eureka-server
  microservice-money:
    build:
      context: ./microservice-money
    restart: always
    environment:
      DB_URL: file:/usr/app/h2/microservice_money
      DB_USER: ***************
      DB_PASSWORD: **************
      DEBUG_LEVEL: INFO
      EUREKA_URI: http://eureka-server:8761/eureka
    volumes:
      - /temp/microservice-money/h2:/usr/app/h2/
      - /temp/microservice-money/logs:/usr/app/microservice-money/logs
    depends_on:
      - eureka-server
  microservice-company:
    build:
      context: ./microservice-company
    restart: always
    environment:
      DB_HOST: db
      DB_PORT: 3306
      DB_NAME: microservice_company
      DB_USER: ****************
      DB_PASSWORD: **************************
      DEBUG_LEVEL: INFO
      EUREKA_URI: http://eureka-server:8761/eureka
    volumes:
      - /temp/microservice-company/logs:/usr/app/microservice-company/logs
    depends_on:
      - eureka-server
  adminer:
    image: adminer
    restart: always
    ports:
      - 8002:8080
  db:
    image: mysql:8.0.17
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: *********************
    ports:
      - 3306:3306
    volumes:
      - /temp/mysql01:/var/lib/mysql
    security_opt:
      - seccomp:unconfined
  microservice-resume:
    build:
      context: ./microservice-resume
    restart: always
    environment:
      DB_HOST: db
      DB_PORT: 3306
      DB_NAME: microservice_resume
      DB_USER: ******************
      DB_PASSWORD: *********************
      DEBUG_LEVEL: INFO
      EUREKA_URI: http://eureka-server:8761/eureka
    volumes:
      - /temp/microservice-resume/logs:/usr/app/microservice-resume/logs
    depends_on:
      - eureka-server
  microservice-vacancy:
    build:
      context: ./microservice-vacancy
    restart: always
    environment:
      DB_HOST: db
      DB_PORT: 3306
      DB_NAME: microservice_vacancy
      DB_USER: *******
      DB_PASSWORD: *******
      DEBUG_LEVEL: INFO
      EUREKA_URI: http://eureka-server:8761/eureka
    volumes:
      - /temp/microservice-vacancy/logs:/usr/app/microservice-vacancy/logs
    depends_on:
      - eureka-server
Answer 1

Проблема была в том что docker-compose по умолчанию использует собственную сеть. (отдельную от сети хоста). Чтобы исправить это нужно было добавить network_mode: host. Подробнее об этом можно прочитать тут: https://docs.docker.com/network/

version: '3.7'
services:
  eureka-server:
    hostname: localhost
    network_mode: host
    build:
      context: ./eureka-server
    restart: always
    environment:
      DEBUG_LEVEL: INFO
    ports:
      - 8761:8761
    volumes:
      - /temp/eureka-server/logs:/usr/app/eureka-server/logs
  gateway-service:
    hostname: localhost
    network_mode: host
    build:
      context: ./gateway-service
    restart: always
    ports:
      - 8762:8762
    volumes:
      - /temp/gateway-service/logs:/usr/app/gateway-service/logs
READ ALSO
Bearer авторизация java

Bearer авторизация java

Посылаю запрос:

128
Хороший аналог Admob в России

Хороший аналог Admob в России

Работал с Admob, все было хорошо, но ограничили показ тк

104
Как исправить Bad request при отправки POST запроса?

Как исправить Bad request при отправки POST запроса?

помогите разобраться! Использую технологии: Spring, thymeleaf

107