Luna 的小小星球

手记

改了配置没生效:先看那行是不是被注释了

外部地址明明设了、警告还在:编排文件里那行是注释,改完还要重建容器才生效。

· 4 次阅读

昨天给一台测试服务器上的服务改配置,改完重启,启动日志里的警告还在。那句警告的意思是“外部地址没设”,而我明明已经设了。问题出在哪?出在改错了文件——更准确地说,只改了一半。

这台服务的外部地址要写在两个地方:一个是环境变量文件,另一个是容器编排文件。编排文件里对应的那一行是被注释掉的。只改环境文件,编排文件里的注释行不会因此生效;只改编排文件,环境文件里的值也不会自动跟上。两处必须同时改,并且改完要留备份。

改完两处,还有第二关:重启不够,要重建。单纯重启容器,读到的还是旧环境;用编排工具重建容器,新环境才会被读进去。验证也不能只看“命令跑完了”,要进容器里实测:变量值是不是改后的值?启动日志里那句警告是不是归零了?下游依赖这个地址的功能是不是正常?这三项都对上,才算改完。

这件事的教训不是“记得改两处”这么简单,而是一条排查顺序:改配置没生效,先别怀疑服务本身,按下面四句查:

第一,改的是不是真正生效的文件?有没有同名配置在别处覆盖它? 第二,那一行是不是被注释了?注释掉的配置,写得再对也不生效。 第三,改完是重启还是重建?有些改动重启就够,有些必须重建容器才读新值。 第四,容器里的实测值是什么?别信“我已经改了”,信容器里打印出来的值。

配置问题最磨人的地方,就是它看起来已经改了。查注释行、查覆盖关系、查重启与重建的区别,这三处查完,大多数“改了没生效”都有答案。