【发布时间】:2020-04-28 10:46:20
【问题描述】:
按照Execute a script before CMD 上的建议(我需要在重新启动容器之前清除临时目录以修复错误),我将我的 docker 文件从使用 CMD 修改为入口点,如下所示:
ENTRYPOINT ["/app/entrypoint.sh", "/usr/bin/java -Dlog4j.configurationFile=/app/resources/LINUX/${LOG4J_FILE} -Dpa.config=/app/resources/LINUX/${CONFIG_FILE} -jar /app/app.jar"]
并在 rm -rf 命令之后的入口点文件结束:
exec "$@"
但是docker无法启动容器,它退出了,容器日志显示:
+ exec '/usr/bin/java -Dlog4j.configurationFile=/app/resources/LINUX/${LOG4J_FILE} -Dpa.config=/app/resources/LINUX/${CONFIG_FILE} -jar /app/app.jar'
/app/entrypoint.sh: line 7: /usr/bin/java -Dlog4j.configurationFile=/app/resources/LINUX/${LOG4J_FILE} -Dpa.config=/app/resources/LINUX/${CONFIG_FILE} -jar /app/app.jar: No such file or directory - 这是什么意思?怎么了?
【问题讨论】:
-
你的图片中是否存在
/usr/bin/java? -
它必须,图像没有改变,我只是更改了代码以通过入口点脚本而不是
CMD最后运行该命令,所以我可以在之前运行rm -rf命令......但是无论如何,我刚刚登录到一个覆盖入口点脚本的容器,并手动验证 - 文件在那里:lrwxrwxrwx 1 root root 22 Dec 14 18:14 /usr/bin/java -> /etc/alternatives/java指向lrwxrwxrwx 1 root root 73 Dec 14 18:14 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/jre/bin/java
标签: shell docker environment-variables docker-entrypoint