Docker运行ENTRYPOINT不会替换环境变量

时间:2018-06-30 22:32:19

标签: docker

我有一个如图所示的入口点

ENTRYPOINT /usr/bin/java ... /usr/path/$FILE

我正在尝试在启动容器时传递环境变量

-e FILE=myfile.txt

但是,该值似乎没有被替换。 Java抛出/usr/path is a directory异常。如果我在dockerfile中使用文件名对入口点进行硬编码,则可以正常工作。

ENTRYPOINT /usr/bin/java ... /usr/path/myfile.txt

它确认未替换$ FILE。

该如何解决?

注意:

有趣的是docker-compose效果很好!

environment:
  - FILE=myfile.txt

1 个答案:

答案 0 :(得分:2)

为了确保正确使用的shell form of ENTRYPOINT确实替代了环境变量$FILE,请添加exec

ENTRYPOINT exec /usr/bin/java ... "/usr/path/$FILE"

然后检查您的docker run -e FILE=xxx yourImage是否有效。

假设您的Dockefile包含一个ENV FILE aDefaultFile指令,以便docker run -e工作。