Как правильно получить доступ к свойствам в 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)