Возникла проблема с переходом с монолитного проекта на ммикросервисную архитектуру. Есть несколько сервисов которые будут распологаться на одном сервре и несколько других на другом. Пытаюсь реализовать это, но никак не получается. Сам 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
Проблема была в том что 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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
помогите разобраться! Использую технологии: Spring, thymeleaf