如何在Ubuntu服务器命令行编辑yml文件并正确添加环境变量
解决方案
推荐优先使用专门的YAML处理工具yq操作,可完全避免缩进错误问题,对YAML格式兼容性最好:
方法1:使用yq工具(推荐)
- 先安装yq:
sudo apt update && sudo apt install yq # 若apt源无对应包,也可使用snap安装 snap install yq
- 直接指定层级添加环境变量,工具会自动匹配原有缩进格式:
# 示例:添加名为MY_NEW_VAR的环境变量,值为test_value yq e '.services.samson.environment.MY_NEW_VAR = "test_value"' -i docker-compose.yml
如果需要一次性添加多个环境变量,直接追加多条赋值语句即可:
yq e ' .services.samson.environment.MY_NEW_VAR1 = "val1" | .services.samson.environment.MY_NEW_VAR2 = "val2" ' -i docker-compose.yml
方法2:使用sed命令
如果不方便安装额外工具,可使用sed追加行,需提前核对现有environment下变量的缩进空格数,你给出的示例中environment下的变量前缀为6个空格,按以下格式操作即可:
# 示例:在RAILS_LOG_TO_STDOUT行后追加新的环境变量 sed -i '/^ *RAILS_LOG_TO_STDOUT: 1/a \ MY_NEW_VAR: "test_value"' docker-compose.yml
注意:命令中
\后面的空格数要和原有environment下的变量缩进完全一致,你可以打开原文件数一下现有变量前面的空格数,对应修改即可。
内容的提问来源于stack exchange,提问作者sagar
相关产品推荐
相关产品推荐

