我遇到问题在我的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/#cmd和 https://github.com/moby/moby/issues/5509
在我看来,跑步时:
sudo docker run -it nameOfImage
应该在附加$ test_var的情况下执行关键字。以下两个中的任何一个都应该起作用:
keyword $test_var
keyword hello
然而,这对我不起作用。使用RUN时,环境变量正确替换:
RUN echo $test_var
但是,CMD无法使用它。有什么建议?谢谢你。
答案 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