我有一个Dockerfile,在这里我试图读取运行时的args。这是我的文件
FROM clojure:openjdk-8-lein-slim-buster
ENV dbconfig ""
ENTRYPOINT ["java","-Ddbconfig=${dbconfig}", "-jar", "abc.jar", "server"]
EXPOSE 8080
下面是我在运行时传递值的docker命令。我在这里做错什么了吗?值总是被识别为null。我也尝试过移除ENV dbconfig ""
,但是没有任何效果。
docker run --rm -e dbconfig='{"somekey" "value"}' xyz/abc
发布于 2020-08-08 23:58:53
定义入口点有两种方法:exec对shell。
exec表单被解析为JSON数组,这意味着您必须在单词而不是单引号(‘)周围使用双引号(“)。所以您可以使用
exec
表单。
但:
与shell窗体不同,exec窗体不调用命令shell。这意味着正常的shell处理不会发生。例如,ENTRYPOINT "echo“、" $HOME”不会在$HOME上执行变量替换
因此,请使用shell表单来允许env变量替换:
ENTRYPOINT java -Ddbconfig=${dbconfig} -jar abc.jar server
或在exec表单中调用shell:
ENTRYPOINT [ "sh", "-c", "java","-Ddbconfig=${dbconfig}", "-jar", "abc.jar", "server" ]
发布于 2020-08-08 23:06:39
尝试使用CMD传递运行时参数,示例如下
ENTRYPOINT ["/bin/bash"]
CMD ["/sample.sh", "argument1","argument2"]
然后在运行时传递参数将是:-
docker run -i -t argument1 argument2
https://stackoverflow.com/questions/63323240
复制相似问题