把一段 JSON 配置塞进环境变量,程序解析一直失败。

现象:打印出来看着正常,但 json.loads 报错。

原因:docker-compose.yml 里写的 config: ${MY_JSON},YAML 解析时把双引号处理掉了,或者 shell 里 export 时没加引号。

解法:

  • compose 里用单引号包住整个值
  • 或者干脆把 JSON 放文件,用挂载,环境变量只存路径

我现在一律选后者。环境变量适合放简单的键值,复杂结构放文件。用环境变量传 JSON 迟早出编码和转义问题,而且排查困难——日志里看着是对的,实际字节已经不一样了。

同类问题还有:密码里有 $ 符号被 shell 展开,连接串里的 & 被当成后台执行。

主楼