如何从都部署在Docker容器中的微服务正确访问Spring Cloud Config Server中的属性?

时间:2018-07-24 03:53:31

标签: docker docker-compose spring-cloud netflix-eureka configserver

我使用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引用了Config 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 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

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

0 个答案:

没有答案