我正在尝试构建一个独立的spring boot admin应用程序,我们的所有实例(在网络负载平衡器后面的私有VPC中)都可以注册。 但是我的spring boot应用程序本身在docker容器中运行,因此主机名和ip-address始终默认为容器的主机名和容器ip-address。 而且spring-boot管理员失败并显示
`Request failed with status code 502`
Connection refused: /1XX.17.0.2:8840
因为它找不到具有主机名或IP地址的实际主机。
我在下面(一个实例)进行了设置,
`spring.boot.admin.client.instance.service-base-url`
但是不能将其用于多个客户端,因为我无法指定逗号分隔的值。
此外,由于在任何时候都可以有n
个实例,所以我不想使用以下属性。
`spring.boot.admin.client.instance.service-base-url`
所以我建议在spring-boot-admin git hub页面和issues部分省略spring.boot.admin.client.instance.service-base-url
,并在下面使用
`spring.boot.admin.client.instance.prefer-ip=true`
但是由于我的应用程序在docker容器中运行, spring boot客户端使用容器id / ip-address作为主机名/ ip-address注册自己。
我还在我的AWS beantalk文件中尝试了"--net=admin-network","--name client"
参数
"containerDefinitions": [
{
"name": "cloudy-email",
"image": "xxx.dkr.ecr.us-east-2.amazonaws.com/sba-admin-repo:xx_2019-04-24_14.36_e9aax8710",
"command": [ "--net=admin-network","--name client"],
"Update": "true",
我该如何克服这个问题? 任何指针/引用将不胜感激。
答案 0 :(得分:0)
您可以使用--network host
命令的docker run
选项使docker在主机网络中运行。这将使容器采用与主机VM相同的IP地址。另外,检查是否要通过Docker和主机防火墙(安全组)公开管理端口。