1

我的所有微服务都使用 Spring Cloud(配置服务器、Eureka 服务器、API 网关和服务)相互依赖地工作,并且在我的本地计算机上运行得非常好。但是我在 docker 容器中运行它们时遇到问题,因为我相信Eureka Server 和其他服务没有从 Config Server 获取属性

我能够在端口 8888 上毫无问题地在容器中运行配置服务器,但其他人则不然。即使我在属性文件中指定了 8761,Eureka Server 也始终在默认端口 8080 上运行,然后它会在几秒钟后失败。以下是我的 docker 和属性文件。

这是我的配置服务器的 bootstrap.properties:

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


我通过以下方式从 Eureka Server 引用配置服务器:

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


这是我的 Eureka Server 的属性:

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


这是我的配置服务器的 dockerfile:

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 Server 的 dockerfile:

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 撰写文件:

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

希望任何人都可以帮助我,这样我终于可以看到它们在 docker 容器中运行,接下来我可以探索 Kubernetes。

4

1 回答 1

0

这有点晚了,但我遇到了同样的问题。这是因为您必须使用 spring 云配置服务器强制使用本机配置文件。

这里的重点是“SPRING_PROFILES_ACTIVE=native”

码头工人-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)
于 2021-09-22T07:51:15.913 回答