我有一个如图所示的入口点
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
答案 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
工作。