【问题标题】:Dockerfile and environnement variablesDockerfile 和环境变量
【发布时间】:2017-10-09 08:54:16
【问题描述】:

我的 Dockerfile 有一个奇怪的行为。我尝试让它使用来自环境变量的文本写入文件:

FROM ubuntu:14.04

ENV KEY ''
ENV VAL ''

RUN echo "${KEY}:${VAL}" > /etc/test

CMD []

我构建了这个图像并像这样运行它:

docker run -it --rm -e KEY=aaa -e VAL=bbb mytest

如果我显示 /etc/test 文件,它是空的(它存在,但为空)。似乎在创建文件时,没有设置环境变量。

有什么想法吗?

谢谢

【问题讨论】:

    标签: docker environment-variables dockerfile


    【解决方案1】:

    当你使用docker build ...构建镜像时,docker文件RUN echo "${KEY}:${VAL}" > /etc/test中的命令被执行

    因此这是合乎逻辑的,因为此时 env 变量为空。 您需要将逗号移动到启动映像时将运行的 CMD 命令。

    【讨论】:

      【解决方案2】:

      您可以将 KEY 和 VALUE 定义为参数,并在构建 docker 映像时设置它们的值。

      FROM ubuntu:14.04
      
      ARG KEY
      ARG VAL
      
      RUN echo "${KEY}:${VAL}" > /etc/test
      
      CMD []
      

      然后你可以像这样构建图像:

      docker build --build-arg KEY=<value> --build-arg VAL=<value> .
      

      https://docs.docker.com/engine/reference/builder/#using-arg-variables

      【讨论】:

      • 嗯...这意味着您需要构建与键值对一样多的图像。就我而言,为什么不...
      • 如果您更喜欢构建单个图像,并在运行时更改您的 KEY 和 VAL 值,您可以创建一个脚本并将其作为入口点运行,并将值作为环境变量传递给 docker 容器.
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 2019-12-07
      • 2017-11-15
      • 2023-04-04
      • 1970-01-01
      相关资源
      最近更新 更多