我有一个用脚本启动的 java 进程:
#!/bin/sh
exec java $JAVA_OPTS -cp "lib/*" com.example.Launcher
为了断言 clean jetty 关闭,我添加了以下关闭钩子(Hook):
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable()
{
@Override
public void run()
{
LOGGER.info("SIGTERM received");
try
{
jettyServer.stop();
LOGGER.info("Shutdown completed");
System.exit(0);
}
catch(Exception e)
{
LOGGER.error(e.getMessage(), e);
}
}
}));
我在日志中看到,SIGTERM received
和Shutdown completed
,尽管如此,docker inspect
始终显示状态 137。
我最近添加了 System.exit(0)
,但这并没有改变任何东西。
我做错了什么?
最佳答案
我认为这是因为内存不足。 在官方文档中,有决议。 https://success.docker.com/article/what-causes-a-container-to-exit-with-code-137
关于docker 停止后,docker 容器中的 Java 进程始终以状态 137 结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54512013/