我有一个简单的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/