Свойство Spring.config.import из application.properties не перезаписывается переменными среды в микросервисном приложениJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Свойство Spring.config.import из application.properties не перезаписывается переменными среды в микросервисном приложени

Сообщение Anonymous »

У меня есть проект со следующими микросервисами:
  • FE: приложение Spring Boot 3, которое отображает информацию пользователю li>
    BE: приложение Spring Boot 3, которое подключается к базе данных и отправляет информацию в FE
  • MySql : база данных, в которой хранятся данные
  • Сервер конфигурации: Приложение Spring Cloud, которое хранит конфигурации сервисов на Github.
В сервисах FE и BE я настроил свойство spring.config.import, которое соединяет эти службы с Config Server. Например, в проекте BE (springcloud-fe-thymeleaf-be-springboot-db-sql-mysql-config_BE) у меня есть следующий файл application.properties:

Код: Выделить всё

# Port
server.port=8081

# Service Name
spring.application.name=be

# Config Server
spring.config.import=configserver:http://localhost:8888
Я пытаюсь перезаписать это свойство в файле docker-compose.yaml (spring.config.import: configserver:http://config:8888 ):

Код: Выделить всё

be:
image: be-image:0.0.1
container_name: be-container
build:
context: ./springcloud-fe-thymeleaf-be-springboot-db-sql-mysql-config_BE
dockerfile: Dockerfile
depends_on:
config:
condition: service_healthy
ports:
- 8081:8081
environment:
spring.config.import: configserver:http://config:8888
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8081/actuator/health"]
interval: 10s
timeout: 10s
retries: 5
start_period: 10s
networks:
- helloworld-network
Я запускаю Docker Compose, используя следующую команду:

Код: Выделить всё

docker-compose up -d --build
Я получаю следующую ошибку на рабочем столе Docker:

Код: Выделить всё

2025-01-20 17:02:36 Caused by: org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://localhost:8888/be/default": Connection refused
2025-01-20 17:02:36     at org.springframework.web.client.RestTemplate.createResourceAccessException(RestTemplate.java:926)
2025-01-20 17:02:36     at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:906)
Похоже, что служба BE пытается подключиться к localhost вместо службы config. То же самое происходит со службой FE и свойствами среды Docker и Kubernetes.
Проверено на:
  • Java: 23
  • Spring Boot: 3.4.1
  • Spring Cloud: 2024.0.0
  • Mvn: 3.9.6
Ссылка на репозиторий Github: https://github.com/wisniewskikr/chrisblog-it-cloud/ Tree/main/spring-cloud/config/springcloud-fe-thymeleaf-be-springboot-db-sql-mysql-config
Есть идеи, почему свойство spring.config.import не перезаписывается переменными среды из Docker, Docker Compose или Kubernetes?

Подробнее здесь: https://stackoverflow.com/questions/793 ... written-by
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»