我从Docker容器内部启动了Spring Cloud的Eureka。这是我用于构建和公开Eureka的Dockerfile:
FROM maven:3.5-jdk-8 AS build
COPY src /home/eureka/src
COPY pom.xml /home/eureka
RUN mvn -f /home/eureka/pom.xml clean package
FROM openjdk:8-jdk-alpine
COPY --from=build /home/eureka/target/service-registry-1.0-SNAPSHOT.jar /usr/app/service-registry-1.0-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","/usr/app/service-registry-1.0-SNAPSHOT.jar"]
EXPOSE 8761
这是我的docker compose文件:
version: '2.1'
services:
eureka-service-registry-app:
build: eureka-service-registry-app
ports:
- "8761-8761"
基础架构中将会有更多的应用程序,但是现在它们被评论了。
我启动docker-compose up
,过程看起来正常,但是当我想通过localhost:8761检查Eureka Web仪表板时,该主机不可用。嗯好在我的容器列表中,我看到以下内容:
0.0.0.0:32772->8761/tcp
和localhost:32772可用,而Eureka还活着。此外,如果我再次启动docker-compose,则此端口将增加,而Eureka将可用的新端口将为32773。因此,我看到了一些模式,但我不了解如何像Eureka一样使此端口稳定和常规。始于8761上没有Docker
答案 0 :(得分:3)
您使用以下命令定义端口范围
ports:
- "8761-8761"
请更改为
ports:
- "8761:8761"
答案 1 :(得分:0)
正如其他人已经指出的那样:docker-compose.yml中暴露的端口应更改为
-"8761:8761"
。
但是我看到更多的要点。
据我所知,尤里卡的默认端口是1111。 您是否暴露了正确的端口?
此外,将eureka与docker结合使用时要格外小心。 他们可能会通过localhost或内部IP地址注册自己。 Docker容器,其他Docker容器可能无法提供。
考虑一下以下应用程序比例(或环境变量):
eureka.instance.prefer-ip-address=false
eureka.instance.ip-address=$HOST_IP_ADDRESS
eureka.instance.hostname=localhost