【问题标题】:How to pass a json-like environment variable to docker run如何将类似 json 的环境变量传递给 docker run
【发布时间】:2021-04-17 19:57:42
【问题描述】:

我正在尝试传递这个变量:REGION={'code': 44, 'name': 'grand_est', 'pretty_name': 'Grand Est'}docker run

确切的命令是:

docker run \
 -e "REGION={'code': 44, 'name': 'grand_est', 'pretty_name': 'Grand Est'}" \
 meteocovid

但我得到了错误:

docker: invalid reference format.

我无法将变量 REGION 拆分为单独的变量,因为 docker 容器需要这种精确格式的变量,而我无法在容器中重建变量。

有人有想法吗?

【问题讨论】:

  • 您确定您尝试了您提到的确切命令吗?因为docker run -e "REGION={'code': 44, 'name': 'grand_est', 'pretty_name': 'Grand Est'}" debian /bin/bash -c 'echo $REGION' 为我工作……
  • 只需 base64 作为值并在您的 docker 映像中处理它。
  • @ErikMD,我仔细检查过,我有确切的东西......
  • @JerylCook,它确实在 Base64 中工作,感谢您的想法

标签: json docker shell environment-variables


【解决方案1】:

试试这个:

docker run \
 -e REGION="{'code': 44, 'name': 'grand_est', 'pretty_name': 'Grand Est'}" \
 meteocovid

您现在正在传递一个“对象”字符串,然后您可以用您使用的任何语言对其进行解析。

【讨论】:

  • 好的,但是 bash 中的 IINM、program foo="bar…"program "foo=bar…" 的解析方式完全相同……不是吗?
  • 它正在工作,但我必须自定义我在 python 中使用的 json 解析器。简单的解决方法是: docker run \ -e REGION="{\"code\": 44, \"name\": \"grand_est\", \"pretty_name\": \"Grand Est\"}" \meteocovid
猜你喜欢
  • 2017-01-22
  • 2021-06-25
  • 1970-01-01
  • 2020-11-07
  • 2015-08-10
  • 2018-08-23
  • 2019-06-02
  • 2018-03-24
  • 2015-09-18
相关资源
最近更新 更多