【问题标题】:echo multi-line json file in Dockerfile with environment variable values在 Dockerfile 中使用环境变量值回显多行 json 文件
【发布时间】:2020-07-08 16:40:25
【问题描述】:

我试图在我的容器的构建步骤中通过 Dockerfile 动态生成一个 json 文件,如下所示:

FROM alpine:3.9

// ... snipped

SHELL ["/bin/bash", "-c"]
RUN echo $'{\n\
  "type": "some_type",\n\
  "project_id": "$PROJECT_ID",\n\
  "private_key_id": "$PRIVATE_KEY_ID"\n\
}' > /etc/my_creds.json

EXPOSE 80

这很好用,所以当我进入我的容器和cat /etc/my-creds.json 文件时,似乎环境变量$PROJECT_ID$PRIVATE_KEY_ID 是按字面意思写的,它们没有被现有的环境变量值替换。

即文件在容器中如下所示:

有什么想法我在这里可能做错了吗?

【问题讨论】:

    标签: docker environment-variables


    【解决方案1】:

    如果使用双引号和转义,shell会扩展变量,例如:

    FROM ubuntu
    ENV FOO=bar
    RUN echo "{\"foo\": \"$FOO\"}" >foo.json
    
    $ docker build -t foo .
    $ docker run foo cat foo.json
    {"foo": "bar"}
    

    【讨论】:

      猜你喜欢
      • 2018-10-22
      • 2022-01-07
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-13
      相关资源
      最近更新 更多