我的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文件,它是空的(它存在但是为空)。似乎在创建文件时,未设置环境变量。
有什么想法吗?
谢谢
答案 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