Docker Enviroment变量无法正常工作?

时间:2018-01-23 00:26:59

标签: command-line dockerfile

我遇到问题在我的Dockerfile中将一个环境变量附加到ENTRYPOINT。

由于Dockerfile具有敏感数据,我将尝试显示类似的示例:

FROM ubuntu:latest
.
.
.
ENV test_var hello

ENTRYPOINT ["keyword"] 

CMD ["sh", "-c", "echo $test_var"]

我从以下位置执行了CMD: https://docs.docker.com/engine/reference/builder/#cmdhttps://github.com/moby/moby/issues/5509

在我看来,跑步时:

sudo docker run -it nameOfImage 
应该在附加$ test_var的情况下执行

关键字。以下两个中的任何一个都应该起作用:

keyword $test_var

keyword hello

然而,这对我不起作用。使用RUN时,环境变量正确替换:

RUN echo $test_var

但是,CMD无法使用它。有什么建议?谢谢你。

1 个答案:

答案 0 :(得分:0)

我认为Dockerfile不允许您以这种方式执行替换,但是通过将shell脚本传递给ENTRYPOINT有一种解决方法。

Dockerfile

FROM ubuntu:latest
ENV test_var hello
COPY entrypoint.sh /
ENTRYPOINT ["sh", "./entrypoint.sh"]
CMD ["test_var"]

entrypoint.sh

#/bin/bash
echo $(printenv $1) #in this case 'echo' is 'keyword'

你会看到结果

hello