Dockerfile和环境变量
问题描述:
我的Dockerfile有一个奇怪的行为。我尽量做到写入文件与文本从环境来varibales: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文件,它是空的(它是存在的,但是空的)。看起来,当它创建文件时,环境变量没有设置。
有什么想法?
谢谢
答
在泊坞窗文件RUN echo "${KEY}:${VAL}" > /etc/test
的命令时,你建立使用docker build ...
因此,这是合乎逻辑的,因为在这一点上ENV变量是空的图像被执行。 您需要将commad移动到将在图像启动时运行的CMD命令。
答
您可以将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
嗯...这意味着你需要为你键值对建立尽可能多的图像。在我的情况下,为什么不... – Cabrinha
如果您更喜欢构建单个图像,并在运行时更改KEY和VAL值,则可以创建脚本并将其作为入口点运行,并将值作为环境变量传递给泊坞窗容器。 –