docker部署nacos服务报错 save snapshot error, ?/nacos/config/

文章描述了在使用Docker部署微服务过程中遇到Nacos配置服务的错误,具体是由于Docker容器内的用户ID与启动命令指定的ID不一致,导致NacosAPI无法正确获取用户目录,进而影响本地缓存路径的生成,引起启动失败。解决方案是确保用户ID在容器内外的一致性或改用非Docker方式启动服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用docker部署微服务报错:

15:00:39.076   [TID: N/A] [com.alibaba.nacos.client.Worker.longPolling.fixed-192.168.20.133_8848-192.168.20.134_8848-192.168.20.135_8848-wealth-alpha] ERROR com.alibaba.nacos.client.config.impl.LocalConfigInfo
Processor : [fixed-192.168.20.133_8848-192.168.20.134_8848-192.168.20.135_8848-wealth-alpha] save snapshot error, ?/nacos/config/fixed-192.168.20.133_8848-192.168.20.134_8848-192.168.20.135_8848-wealth-alpha_n
acos/snapshot-tenant/wealth-alpha/wp/wp-chance
java.io.FileNotFoundException: ?/nacos/config/fixed-192.168.20.133_8848-192.168.20.134_8848-192.168.20.135_8848-wealth-alpha_nacos/snapshot-tenant/wealth-alpha/wp/wp-chance (No such file or directory)
        at java.io.FileOutputStream.open0(Native Method)
        at java.io.FileOutputStream.open(FileOutputStream.java:270)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
        at com.alibaba.nacos.common.utils.IoUtils.writeStringToFile(IoUtils.java:66)
        at com.alibaba.nacos.client.config.impl.LocalConfigInfoProcessor.saveSnapshot(LocalConfigInfoProcessor.java:123)
        at com.alibaba.nacos.client.config.impl.ClientWorker.getServerConfig(ClientWorker.java:241)
        at com.alibaba.nacos.client.config.NacosConfigService.getConfigInner(NacosConfigService.java:143)
        at com.alibaba.nacos.client.config.NacosConfigService.getConfig(NacosConfigService.java:92)
        at com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder.loadNacosData(NacosPropertySourceBuilder.java:85)
        at com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder.build(NacosPropertySourceBuilder.java:74)
        at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.loadNacosPropertySource(NacosPropertySourceLocator.java:204)
        at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.loadNacosDataIfPresent(NacosPropertySourceLocator.java:191)
        at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.loadApplicationConfiguration(NacosPropertySourceLocator.java:142)
        at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.locate(NacosPropertySourceLocator.java:103)

参考:https://github.com/alibaba/nacos/issues/3479

找到nacos的issues里面有这个问题,原因大概是,docker启动服务的时候,指定了userId,但是userId在docker容器内没有(比如虽然用户同名,但是用户id不同的情况),导致nacos的api根据userId获取用户目录失败,只返回了一个?。导致拼接的本地缓存目录地址错误,进而启动失败。

解决办法:用户id和启动命令的一致,或者不用docker启动服务

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值