У меня есть проект на основе микросервиса, разработанный с использованием Springboot, Maven и сервера Netflix eureka. Я хочу развернуть их с помощью Docker Compose. Однако, когда я их развернул, все службы были зарегистрированы на сервере eureka, но работали только две службы, а все остальные службы выдавали ошибку 413 на стороне клиента без уважительной причины. Вот файл Docker Compose,
---
version: '3.7'
services:
## Eureka Server
discovery-server:
platform: linux/amd64
image: hanzjk/discovery-server:latest
container_name: discovery-server
pull_policy: always
ports:
- "8761:8761"
environment:
- SPRING_PROFILES_ACTIVE=docker
api-gateway:
platform: linux/amd64
image: hanzjk/api-gateway:latest
container_name: api-gateway
pull_policy: always
ports:
- "8080:8080"
environment:
- SPRING_PROFILES_ACTIVE=docker
- LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_SECURITY= TRACE
depends_on:
- discovery-server
## Agora Token-Service Docker Compose Config
agora-token-server:
platform: linux/amd64
container_name: agora-token-server
pull_policy: always
image: hanzjk/agora-token-server:latest
environment:
- SPRING_PROFILES_ACTIVE=docker
depends_on:
- discovery-server
- api-gateway
## Avatar-Service Docker Compose Config
avatar:
platform: linux/amd64
container_name: avatar
pull_policy: always
image: hanzjk/avatar:latest
environment:
- SPRING_PROFILES_ACTIVE=docker
depends_on:
- discovery-server
- api-gateway
## Feedback-Service Docker Compose Config
feedback:
platform: linux/amd64
container_name: feedback
pull_policy: always
image: hanzjk/feedback:latest
environment:
- SPRING_PROFILES_ACTIVE=docker
depends_on:
- discovery-server
- api-gateway
## Payment-Service Docker Compose Config
payment:
platform: linux/amd64
container_name: payment
pull_policy: always
image: hanzjk/payment:latest
environment:
- SPRING_PROFILES_ACTIVE=docker
depends_on:
- discovery-server
- api-gateway
## Stats-Service Docker Compose Config
stats:
platform: linux/amd64
pull_policy: always
container_name: stats
image: hanzjk/stats:latest
environment:
- SPRING_PROFILES_ACTIVE=docker
depends_on:
- discovery-server
- api-gateway
## Auth-Service Docker Compose Config
auth:
platform: linux/amd64
pull_policy: always
container_name: auth
image: hanzjk/auth:latest
environment:
- SPRING_PROFILES_ACTIVE=docker
depends_on:
- discovery-server
- api-gateway
## Exhibition-Service Docker Compose Config
exhibition:
platform: linux/amd64
container_name: exhibition
pull_policy: always
image: hanzjk/exhibition:latest
environment:
- SPRING_PROFILES_ACTIVE=docker
depends_on:
- discovery-server
- api-gateway
## Stall-Service Docker Compose Config
stall:
platform: linux/amd64
container_name: stall
pull_policy: always
image: hanzjk/stall:latest
environment:
- SPRING_PROFILES_ACTIVE=docker
depends_on:
- discovery-server
- api-gateway
## Ticket-Service Docker Compose Config
ticket:
platform: linux/amd64
container_name: ticket
pull_policy: always
image: hanzjk/ticket:latest
environment:
- SPRING_PROFILES_ACTIVE=docker
depends_on:
- discovery-server
- api-gateway
Вот конфигурации службы шлюза API,
server.port=8080
eureka.client.serviceUrl.defaultZone=http://eureka:password@discovery-server:8761/eureka
Из этих сервисов только два работают без проблем, а все остальные выдают вышеуказанную ошибку 413. Однако я не получаю такую ошибку, используя идею IntelliJ (я использую только две службы для загрузки файлов, и для них я увеличил размер запроса). Вот файл конфигурации выставочного сервиса,
server.port=8080
eureka.client.serviceUrl.defaultZone=http://eureka:password@discovery-server:8761/eureka
spring.servlet.multipart.max-file-size=500MB
spring.servlet.multipart.max-request-size=500MB
Выставочный сервис работает без проблем, но не киоск, который имеет следующие конфигурации:
server.port=8080
eureka.client.serviceUrl.defaultZone=http://eureka:password@discovery-server:8761/eureka
spring.servlet.multipart.max-file-size=500MB
spring.servlet.multipart.max-request-size=500MB
Вот конфигурации службы статистики, которые не используют загрузку файлов,
server.port=8080
eureka.client.serviceUrl.defaultZone=http://eureka:password@discovery-server:8761/eureka
spring.data.mongodb.uri=mongodb+srv://<password>:[email protected]/?retryWrites=true&w=majority
spring.data.mongodb.database=Nerambum-Stats
spring.data.mongodb.port=27017
Я увеличил размер запроса в соответствии с ошибкой 413, но все равно показывает эту ошибку при вызове вызова API.





Похоже, проблема возникает, когда служба пытается зарегистрироваться в Eureka. Я столкнулся с этой же проблемой и решил ее, добавив следующую строку в файл конфигурации каждой службы.
eureka.instance.instance-id=${spring.application.name}:${random.value}
Это установит идентификатор экземпляра для микрослужбы, который является уникальным идентификатором, используемым реестром для идентификации конкретного экземпляра микрослужбы.
Большое спасибо. Это сработало и для меня. Однако я не хотел включать это при работе без docker compose :)