Как правильно получить доступ к свойствам в Config Server Spring Cloud из микросервиса, развернутого в док-контейнере?

Все мои микросервисы, использующие Spring Cloud (Config Server, Eureka Server, API Gateway и сервисы), работают независимо друг от друга и прекрасно работают на моем локальном компьютере. Но у меня проблемы с запуском их в док-контейнере, потому что я считаю, что Eureka Server и другие сервисы не получают свойства с сервера Config.

Я смог запустить Config Server в контейнере без проблем на порту 8888, но другие нет. Eureka Server всегда работает на порте 8080 по умолчанию, даже если я указал 8761 в файле свойств, но через несколько секунд произойдет сбой. Ниже мой докер и файлы свойств.

Вот bootstrap.properties моего сервера конфигурации:

server.port = 8888
spring.cloud.config.server.native.searchLocations = file:///${user.home}/config-repo
spring.profiles.active = native


Я ссылаюсь на сервер Config с сервера Eureka через это:

spring.cloud.config.uri = http://localhost:8888


А вот свойства моего сервера Eureka:

server.port = 8761
eureka.client.register-with-eureka = false
eureka.client.fetch-registry = false


Вот докер-файл моего сервера конфигурации:

FROM alpine-jdk:base
MAINTAINER javaonfly
COPY files/config-service.jar /opt/lib/
RUN mkdir /var/lib/config-repo
COPY config-repo /var/lib/config-repo
ENTRYPOINT ["/usr/bin/java"]
CMD ["-jar", "/opt/lib/config-service.jar"]
VOLUME /var/lib/config-repo
EXPOSE 8888


Вот докер-файл моего сервера Eureka:

FROM alpine-jdk:base
MAINTAINER javaonfly
COPY files/eureka-service.jar /opt/lib/
ENTRYPOINT ["/usr/bin/java"]
CMD ["-jar", "/opt/lib/eureka-service.jar"]
EXPOSE 8761


Вот мой файл Docker Compose:

version: '2.2'
services:
    config-service:
        container_name: config-service
        build:
            context: .
            dockerfile: Dockerfile-configservice
        image: config-service:latest
        expose:
            - 8888
        ports:
            - 8888:8888
        networks:
            - emp-network
        volumes:
            - config-repo:/var/lib/config-repo
    eureka-service:
        container_name: eureka-service
        build:
            context: .
            dockerfile: Dockerfile-eurekaservice
        image: eureka-service:latest
        expose:
            - 8761
        ports:
            - 8761:8761
        networks:
            - emp-network
networks:
    emp-network:
        driver: bridge
volumes:
    config-repo:
        external: true

Надеюсь, что кто-нибудь может мне помочь с этим, чтобы я наконец-то увидел, как они работают в докер-контейнере, и теперь я смогу исследовать Kubernetes.

1 ответ

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

Ключевым моментом здесь является "SPRING_PROFILES_ACTIVE=native"

docker-compose.yml

      services:
  config-server:
    image: springcommunity/config-server
    container_name: config-server
    mem_limit: 512M
    ports:
     - 8888:8888
    volumes:
     - config-server-vol:/usr/local/config-server
    environment:
     - "SPRING_PROFILES_ACTIVE=native"

Затем вы увидите в журнале контейнера сервера конфигурации.

      6] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: file:////usr/local/config-server/application.yml (document #0)

2021-09-22 07:46:32.949  INFO 1 --- [nio-8888-exec-7] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: file:////usr/local/config-server/visits-service.yml (document #1)

2021-09-22 07:46:32.970  INFO 1 --- [nio-8888-exec-7] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: file:////usr/local/config-server/application.yml (document #2)

2021-09-22 07:46:32.978  INFO 1 --- [nio-8888-exec-7] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: file:////usr/local/config-server/application.yml (document #1)
Другие вопросы по тегам