我有一个简单的Eureka服务器,它的来源几乎是:https://spring.io/guides/gs/service-registration-and-discovery/

我有spring客户端成功地向eureka注册,并且还能够获取客户端的docker镜像,以及向eureka进行注册。但是,我想做的是能够通过执行以下操作来分配docker随机端口(临时端口范围):

docker run -p 8080 MY_IMAGE

我看到我可以通过临时端口docker分配器转到Resful应用程序(eureka客户端)...但是,由于 Spring 配置,在Eureka注册中,分配的端口是8080。

application.yaml:
server:
  port: 8080

我知道我可以创建一个自定义的eureka配置,通过执行以下操作覆盖默认设置:
 @Bean
    public EurekaInstanceConfigBean eurekaInstanceConfig() {
        EurekaInstanceConfigBean config = new EurekaInstanceConfigBean(inetUtils);
        config.setPreferIpAddress(true);
        config.setNonSecurePort(8085); //or any port i want
        return config;
    }

但是我的问题是...。我如何在我的应用程序中获取docker暴露端口(临时端口),以便可以将其传递给eureka?

最佳答案

我成功为我的eureka客户分配了随机端口,如下例。

我的微服务客户端docker文件的内容是,

   FROM openjdk:8-jdk-alpine
LABEL maintainer="tharanga.w@archisoftglobal.com"
VOLUME /tmp
ENV SERVER_PORT 0
EXPOSE ${SERVER_PORT}
ARG JAR_FILE=target/*.jar
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar", "$@"]

docker run命令是,
sudo docker run  -e spring.profiles.active="dev"  -e SERVER_PORT=0 --name archisoft-common-usermanger archisoft-common-usermanger

关于java - Spring 启动,获取Docker公开端口以进行eureka注册,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48544373/

10-12 03:05