首页 > 解决方案 > 使用 Docker 环境变量时如何在 Wget HTTP PUT 中使用外部 JSON 文件?

问题描述

现在的情况:

  1. 基于 Ubuntu 映像的 Dockerfile,安装 Wget 并声明 bashscript 将在容器启动时运行。
  2. Docker 容器基于镜像启动,命令中包含必要的环境变量。这些变量将在 bashscript 的 Wget 命令中使用。

    docker run -i -e ‘ENV_VARIABLE=VALUE’ [imagename]
    
  3. 容器运行 bashscript,其中包含 Wget HTTP PUT:

    wget --method=PUT --body-data=”{\“key\”:\”${ENV_VARIABLE}\”}” ……
    

期望的情况:

目前的情况有效,但我不喜欢这种解决方案。这是因为我必须使用引号转义 (\")。

我试图通过如下构造 --body-data 来解决这个问题,并带有单引号。

‘{“key”:”${ENV_VARIABLE}”}’  

但是,这不会设置 ENV_VARIABLE,因为有效负载现在是一个完整的字符串。

更可取的解决方案是将 JSON 分离为 JSON 文件,我可以在 Wget 调用中引用该文件。这就产生了以下问题:

  1. 如何引用 JSON 文件?我最好的猜测是首先将图像构建中的文件复制到图像中,然后通过 Wget 调用中的路径引用它,但话又说回来,我该如何引用它?
  2. 如果以上几点是正确的,我是否仍然可以参考 Docker 环境变量?

标签: jsonlinuxdockerdockerfilewget

解决方案


推荐阅读