Docker compose не дает доступ к сервисам

У меня есть проект на основе микросервиса, разработанный с использованием 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.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, проблема возникает, когда служба пытается зарегистрироваться в Eureka. Я столкнулся с этой же проблемой и решил ее, добавив следующую строку в файл конфигурации каждой службы.

eureka.instance.instance-id=${spring.application.name}:${random.value}

Это установит идентификатор экземпляра для микрослужбы, который является уникальным идентификатором, используемым реестром для идентификации конкретного экземпляра микрослужбы.

Большое спасибо. Это сработало и для меня. Однако я не хотел включать это при работе без docker compose :)

Rashmika Silva 15.05.2023 16:49

Другие вопросы по теме