我正在使用带有Eureka的Spring Boot Cloud开发项目。当我在机器上运行所有程序时,一切正常。但是当我开始使用Docker时:
我还具有在localhost:8888上运行的Cloud Config Server,并且Docker容器中的服务无法访问它。 尝试在docker-compose,docker堆栈中运行所有程序,但均无效果。
用于Eureka服务器的bootstrap.yml:
spring:
application:
name: conhub-eureka-server
cloud:
config:
uri:
- http://localhost:8888
server:
port: 8761
eureka:
client:
register-with-eureka: false
fetch-registry: false
用于Eureka服务器的Dockerfile(我使用fabric8 docker maven插件):
FROM openjdk
VOLUME /tmp
ADD maven/conhub-eureka-server-0.0.1-SNAPSHOT.jar myapp.jar
RUN sh -c 'touch /myapp.jar'
EXPOSE 8761
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-
jar","/myapp.jar"]
bootstrap.yml例如服务(这是一个zuul网关):
server:
port: 8765
spring:
cloud:
config:
enabled: true
uri: http://localhost:8888
application:
name: conhub-gateway
eureka:
client:
service-url:
default-zone: http://${EUREKA_SERVER_HOST:localhost}:8761/eureka
示例服务的Dockerfile:
FROM openjdk
VOLUME /tmp
ADD maven/conhub-gateway-0.0.1-SNAPSHOT.jar myapp.jar
RUN sh -c 'touch /myapp.jar'
EXPOSE 8765
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-
jar","/myapp.jar"]
我在这里阅读了许多帖子,并尝试了所有尝试,但均未成功。 我想我最大的惊喜是为什么在我的案例http://localhost:8888中,容器中的服务无法访问配置?我可以轻松地手动访问它。
编辑2 好吧,我终于找到了错误。在EurekaClient中,为EurekaServer编写delault区的正确方法是: defaultZone 而不是 default-zone 。 感谢this post