解决docker中启动Spring Boot微服务注册在Eureka后无法访问的问题

2023-11-13

现象

在docker中启动的Spring Boot实例在Eureka上查看实例时,主机名和ip为docker的容器名称和容器环境内的ip。导致从Eureka上点击服务后,无法打开对应服务;同时导致未在docker环境内的服务也无法使用服务名的方式进行服务间调用

基本法

Spring Boot 注册在Eureka上时,默认是以主机名方式进行注册的:
查看实例列表时,可见Status列是按照"{微服务启动的服务器的hostname}:{微服务名称}:{微服务所占的端口}"来显示的;鼠标指向某一个服务,可见其跳转url是按照"http://{微服务启动的服务器的hostname}:{微服务所占的端口}/****"来组织的。

探索

搜索后先尝试了在springcloud+docker 开发 中,遇到的那些坑----之微服务器的跨服务器跨容器访问 @屹邺林梵在启动时指定了

  1. eureka.instance.ip-address=true
  2. eureka.instance.instance-id=http://192.168.31.86:${server.port}

但是在Eureka中查看发现显示的名字变了,但是跳转url中还是容器的ip。
然后发现eureka.instance.instance-id就是Status列中用来显示服务名的Patten。
然后通过查看"org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean"发现还有一个属性是hostname,后来确认eureka.instance.hostname是用来修改跳转url中的hostname

解决

  1. 由于服务注册到Eureka的端口就是服务启动的端口,则docker 运行镜像时,需要映射与容器内的应用相同的端口号
  2. 容器内的服务在启动时指定eureka.instance.instance-ideureka.instance.hostname
docker run -dit -p 应用端口:应用端口 镜像名 java -jar /jar/包/的路径/jar包文件名.jar  --server.port=应用端口 --eureka.instance.instance-id=宿主机的hostname:\${spring.application.name}:\${server.port} --eureka.instance.hostname=宿主机的hostname或ip
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决docker中启动Spring Boot微服务注册在Eureka后无法访问的问题 的相关文章

  • Java将字符串解析为double

    如何解析字符串中的这个 Double 00034800 变成 Double 值 最后两位数字实际上是小数点 所以我正在寻找的结果是348 00 是否有这样的格式可以与十进制格式一起使用 Well String s 00034800 doub
  • 在Windows Server 2003下如何在本地系统帐户下运行jvisualvm.exe?

    我在带有 Java 1 6 u 20 的 Windows Server 2003 下将 GlassFish 3 0 1 作为 Windows 服务运行 总体上我很满意 我希望能够在这个 JVM 上使用 VisualVM 并使用无法在 Tom
  • 连接外部 Accumulo 实例和 java

    我正在尝试使用 Accumulo 连接到虚拟机 问题是 我无法将其连接到 Java 中 我可以看到 Apache 抛出的网页 但我无法让它与代码一起工作 我认为这是缺乏知识的问题而不是真正的问题 但我找不到这方面的文档 所有示例都使用 lo
  • 非易失性领域的出版与阅读

    public class Factory private Singleton instance public Singleton getInstance Singleton res instance if res null synchron
  • 如何在 Android 应用程序中隐藏 Flutterwave API 密钥

    我正在构建一个 Android 应用程序 目前正在将 Flutterwave 集成到我的应用程序中以进行支付 建议我永远不要将 Flutterwave API 密钥放在我的应用程序上 那么我该如何隐藏这些键呢 我正在使用 Retrofit
  • 通过Zuul上传大文件

    我在通过 zuul 上传大文件时遇到问题 我正在使用 apache commons 文件上传 https commons apache org proper commons fileupload https commons apache o
  • getCurrentSession 在网络中休眠

    我正在使用 hibernate 和 jsp servlet 编写一个基于 Web 的应用程序 我读过有关sessionFactory getCurrentSession and sessionFactory openSession方法 我知
  • Mockito 和 Hamcrest:如何验证 Collection 参数的调用?

    我遇到了 Mockito 和 Hamcrest 的泛型问题 请假设以下界面 public interface Service void perform Collection
  • 如何禁用docker容器的root访问权限?

    我们有离岸开发人员 他们希望在本地运行我们的服务器 但出于安全原因 我们不想向他们提供服务器代码 所以一个解决方案是他们运行一个 Docker 容器 这是我们服务器的独立版本 所以他们这边没有复杂的设置 问题在于 始终可以以 root 身份
  • Android 认为我没有关闭数据库!为什么?

    我有一个 SQLiteDatabase 数据成员 我在 onCreate 中初始化它 并在 onPause onStop 和 onDestroy 中调用 close 它在 onResume 中重新初始化 它似乎运行得很好 但当我查看调试器时
  • 在java程序中使用c++ Dll

    我正在尝试使用System LoadLibrary 使用我用 C 编写的一个简单的 dll UseDllInJava java import com sun jna Library import com sun jna Native imp
  • Android - 存储对ApplicationContext的引用

    我有一个静态 Preferences 类 其中包含一些应用程序首选项和类似的内容 可以在那里存储对 ApplicationContext 的引用吗 我需要该引用 以便我可以在不继承 Activity 的类中获取缓存文件夹和类似内容 你使用的
  • Java 8 Stream,获取头部和尾部

    Java 8 引入了Stream http download java net jdk8 docs api java util stream Stream html类似于 Scala 的类Stream http www scala lang
  • titledBorder 标题中的图标

    您好 是否可以在 titledBorder 的标题中放置一个图标 例如以下代码 import java awt GridLayout import javax swing JFrame import javax swing JLabel i
  • Spring Data Rest 多对多 POST

    首先 让我解释一下我的用例 这非常简单 有一个用户实体和一个服务实体 我使用 UserService 作为连接实体 连接表 在用户和服务之间建立多对多关联最初 会有一些用户集和一些服务集 用户可以在任何时间点订阅任何服务 在这种情况下 将向
  • 在 Java 中通过 D-Bus MPRIS 访问 Clementine 实例

    我使用 Clementine 作为音乐播放器 它可以通过 D Bus 命令进行控制 在命令行上 使用 qdbus 我可以 Start Stop 暂停播放器 强制它跳过播放列表中的歌曲 检查播放列表的长度 检查播放列表中当前播放的曲目及其元数
  • 使用 Apache 允许 Glassfish 和 PHP 在同一服务器中协同工作

    是否可以建立从 Java 到 php 文件的桥梁 我有一个用 Java 编写的应用程序 我需要执行http piwik org http piwik org 这是用 PHP 编写的 在服务器中 我正在运行 PHP 但无法从浏览器访问 php
  • 使用 DBCP 配置 Tomcat

    在闲置一段时间 几个小时 后 我们收到了 CommunicationsException 来自 DBCP 错误消息 在异常中 位于这个问题的末尾 但我没有看到任何配置文件中定义的 wait timeout 我们应该看哪里 在 tomcat
  • Java 的“&&”与“&”运算符

    我使用的示例来自 Java Herbert Schildt 的完整参考文献 第 12 版 Java 是 14 他给出了以下 2 个示例 如果阻止 第一个是好的 第二个是错误的 因此发表评论 public class PatternMatch
  • 设置 TreeSet 的大小

    有没有办法像数组一样对 Java 集合中的 TreeSet 进行大小限制 例如我们在数组中 anArray new int 10 数组具有固定长度 在创建数组时必须指定该长度 A TreeSet当您向其中添加元素时会自动增长 您无法设置其大

随机推荐

  • c语言程序书写遵循的规则,C程序书写时应遵循的规则

    在C语言的应用领域 如通讯领域和嵌入式系统领域 一个的软件项目通常包含很多复杂的功能 实现这个项目不是一个程序员单枪匹马可以胜任的 往往需要一个团队的有效合作 另外 在一个以C代码为主的完整的项目中 经常也需要加入一些其他语言的代码 例如
  • 【Jenkins】Jenkins : Mac中Jenkins的停止和启动

    1 美图 2 命令 启动 重启 sudo launchctl load Library LaunchDaemons org jenkins ci plist 停止 sudo launchctl unload Library LaunchDa
  • 【2023】java打印PDF(不需要调用浏览器直接静默打印)

    java打印PDF 不需要调用浏览器直接静默打印 一 简 需求 实现步骤 二 代码实现 0 打印模板 1 服务器部分 端口 8090 1 1 maven依赖 1 2 实体 1 2 1 接口返回类 1 2 2 标签纸页面参数类 1 2 3 P
  • C++ Primer阅读笔记--语句的使用

    空语句 最简单的语句是空语句 其只含有一个单独的分号 switch语句 case 关键字和它对应的值一起被称为 case 标签 case 标签必须是整型常量表达式 char ch getVal int iVal 42 switch ch c
  • java接口的多实现可能遇到的问题与解决方法

    目录 接口中的多实现 代码演示 作用 问题总结 1 多实现接口中多个接口的抽象方法名重复 2 多实现接口中默认方法名重复 3 多实现类中默认方法与抽象方法重名 原理 1 默认方法与接口方法重名 2 默认方法重名 3 抽象类方法重名 接口中的
  • 如何进行PHP中的算术运算和字符串操作?

    PHP中需要进行算术运算和字符串操作的时候 我们可以使用相应的运算符和函数 不过 从新手的角度来说 可能会感到一些困扰 不用紧张 我来给你讲解一下 首先 让我们来谈谈算术运算 在PHP中 可以使用 运算符来进行加法运算 使用 运算符来进行减
  • 以太网PHY芯片MDIO寄存器读写-verilog

    MDIO实现还是比较简单的 应用xilinx FPGA内的VIO核就可以直接读写查看 如果板子有串口 做个简单的处理就可以直接通过电脑读写 时序如下图所示 将下面时序实现就可以实现读写 在实际应用时基本不需要配置 有特殊需求可以做一些应用
  • STM32——TIM输入捕获

    文章目录 一 TIM输入捕获 输入捕获简介 频率测量 二 通用定时器的输入捕获通道 通用定时器框图 通道的输出部分 三 主从触发模式 主模式 从模式 四 输入捕获基本结构 五 PWMI基本结构 六 输入捕获模式测频率 电路设计 关键代码 七
  • 微信二次分享不显示摘要和图片的解决方法

    微信二次分享不显示摘要和图片的解决方法 解决不显示摘要和图片的问题 需要调用微信公众号的js sdk的api 需要前端和后台的配合 后台需要返回 appid 公众号的appid timestamp 生成签名的时间戳 nonceStr 签名的
  • 【狂神Java学习笔记】Java基础

    狂神Java学习笔记 Java基础 参考网址 https www bilibili com video BV12J41137hu 一 注释 单行注释 多行注释 文档注释 用于生产说明文档 二 标识符和关键字 1 标识符概念 在java程序中
  • 只有某个网站无法访问的问题

    某个网站登录不上的问题 楼主遇到了只有百度登录不上 而其他网站及软件都能正常使用的问题 经过多次尝试终于解决 有以下几种解决方案 修改DNS地址 可能是由于DNS设置不正确的问题导致 可以打开网络和internet选项 更改适配器设置点击I
  • Linux学习之系统编程篇:读写锁(pthread_ rwlock _init / rdlock / wrlock / unlock / destroy)

    一 读写锁的认识 1 读写锁是1把锁 2 读写锁的类型 pthread rwlock t lock 又分 读锁 不让读内存 和 写锁 不让写内存 3 读写锁的特性 1 读共享 例如 线程 A 加读锁成功 有来个 3 个线程 作读操作 也可加
  • EOS开发者资源的大清单

    EOS开发者资源的大清单 自主网推出仅3个多月后 EOS正迅速发展其用户和开发者社区 在撰写本文时 EOS已经达到了超过20 000 000个不可逆块 并且具有大约3996个每秒交易 TPS 的一致吞吐量 更令人印象深刻的是不断增长的活跃用
  • 远程访问VM虚拟机方式记录

    网络环境 因个人办公网络相关限制 所使用的虚拟机网络环境为NAT模式 操作步骤 1 获取物理机的IP地址 2 获取虚拟机IP地址 确保要连接的虚拟机开启了相关的远程服务 3 VMware相关设置 先使用点击更改设置获取NAT设置的操作权限
  • TiDB学习

    TiDB 简介 SQL 基本操作 分类 查看 创建和删除数据库 创建 查看和删除表 创建 查看和删除索引 记录的增删改 记录的查询 创建 授权和删除用户 部署集群 数据迁移 运维操作 监控和告警 故障诊断 性能调优 教程 生态工具 参考指南
  • 打开Unity项目,加载进度条一直显示busy不消失

    打开Unity项目 加载进度条一直显示busy不消失 解决办法 我的项目路径存在中文 改成全英文路径再打开一下就好了
  • 红黑树并没有我们想象的那么难(上)

    lt 红黑树并没有我们想象的那么难 gt 上 下两篇已经完成 希望能帮助到大家 红黑树并没有我们想象的那么难 上 红黑树并没有我们想象的那么难 下 红黑树并没有想象的那么难 初学者觉得晦涩难读可能是因为情况太多 红黑树的情况可以通过归结 通
  • cad快速选择命令快捷键_CAD快捷键,命令大全

    一 常用CTRL ALT快捷键 ALT TK 如快速选择 ALT NL 线性标注 ALT VV4 快速创建四个窗口 ALT MUP 提取轮廓 Ctrl B 栅格捕捉模式控制 F9 Ctrl C 将选择的对象复制到剪切板上 Ctrl F 控制
  • 机器学习-对范数的理解

    1 范数的概念 参考 https blog csdn net a6333230 article details 87860875 范数 norm 主要是对矩阵和向量的一种描述 矩阵范数 描述矩阵引起变化的大小 AX B 矩阵X变化了A个量级
  • 解决docker中启动Spring Boot微服务注册在Eureka后无法访问的问题

    现象 在docker中启动的Spring Boot实例在Eureka上查看实例时 主机名和ip为docker的容器名称和容器环境内的ip 导致从Eureka上点击服务后 无法打开对应服务 同时导致未在docker环境内的服务也无法使用服务名