容器中的Springboot应用连接Nacos,无法读取环境变量的尴尬问题

问题描述:
本地测试连接nacos可以,但在k8s的pod中连接不到nacos,提示groupId为空。

其中,bootstrap.yml文件为:

spring:
  application:
    name: ms-scriptengine
  cloud:
    config:
      enabled: false
    nacos:
      config:
        enabled: true
        server-addr: nacos.public.svc.cluster.local:8848
        namespace: ${nacos.namespace}
        group: ${nacos.group}
        file-extension: yaml
 

1. 去pod中查环境变量,发现nacos.namespace 和 nacos.group 都是存在的,说明deployment中配置的环境变量在容器启动后是注入成功的;

2. 怀疑是jar包先启动,后注入的环境变量,于是修改deployment相关配置,使jar包延时1小时启动,去环境变量中查看,nacos.namespace 和 nacos.group 依然是存在的,该假设被推翻;

最终发现,Dockerfile中的启动jar包命令为:

CMD ["sh","/home/hollicube/startup.sh"] 其中startup.sh中是java -jar xxx.jar命令,用来启动应用。

修改为: CMD ["bash","/home/hollicube/startup.sh"] ,成功。

原因:sh已被bash所取代,sh启动应用,应用无法读取带点的环境变量,如上文中,环境变量名为nacos.namespace,带点,bash启动应用就可以读取环境变量。

3. 注意:nacos中配置的文件后缀,如果之前在configserver中是 .yml后缀,到nacos仍然用 .yml后缀也无法读取,需要改为 .yaml。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值