Dockerfile和环境变量

时间:2017-10-09 08:54:16

标签: docker environment-variables dockerfile

我的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文件,它是空的(它存在但是为空)。似乎在创建文件时,未设置环境变量。

有什么想法吗?

谢谢

2 个答案:

答案 0 :(得分:2)

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

构建图像时,会执行泊坞窗文件docker build ...中的命令

因此这是合乎逻辑的,因为在那时env变量是空的。 您需要将commad移动到CMD命令,将运行时的图像开始。

答案 1 :(得分:0)

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

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