【发布时间】:2021-12-17 20:14:11
【问题描述】:
第一次出现的问题很好,但是接下来它无法写入具有相同名称的文件,所以我尝试添加 pod_id 以使其唯一但似乎 pod id 在失败后重新启动时保持不变,所以尝试添加文件名的时间戳,但日期函数被视为字符串,因此每次重新启动时文件名都保持不变,并且下次不会生成堆转储文件。
ENTRYPOINT ["java","-XX:+HeapDumpOnOutOfMemoryError","-XX:HeapDumpPath=mountpath-heapdump/$MY_POD_ID$(date +'%Y-%m-%d_%H-%M-%S')_heapdump.bin","-jar", "/app.jar"])
我也没有双引号:
ENTRYPOINT java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=mountpath-heapdump/$MY_POD_ID$(date +'%Y-%m-%d_%H-%M-%S')_heapdump.bin -jar app.jar
在 POC 中工作正常,但对于我的项目应用程序,环境变量没有反映,没有选择 spring-profile。甚至其他环境变量也没有被选中。所以我正在尝试第一种方法,只是我需要帮助在文件名中附加时间戳。
【问题讨论】:
-
According to this document,shell 处理不会以 exec 形式发生。因此,有必要明确规定如何执行。
-
在 Exec 形式的文件名中附加时间戳的替代方法是什么?
-
你可以尝试在shell
ENTRYPOINT ["bash", "-c", "java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=mountpath-heapdump/$MY_POD_ID$(date +'%Y-%m-%d_%H-%M-%S')_heapdump.bin -jar /app.jar"]运行java -
@AKASHKESHARI 除了 rzlvmp 提供的非常好的答案,我还写了另一个替代方案。
标签: docker dockerfile environment-variables docker-entrypoint