首页 > 解决方案 > docker 容器中的 Java 进程在 docker stop 后始终以状态 137 结束

问题描述

我有一个以脚本开头的 java 进程:

#!/bin/sh
exec java $JAVA_OPTS -cp "lib/*" com.example.Launcher

为了断言干净的码头关闭,我添加了以下关闭挂钩:

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 receivedShutdown completeddocker inspect始终显示状态 137。

我最近添加了System.exit(0),但这并没有改变任何东西。

我在这里做错了什么?

标签: javadocker

解决方案


我认为这是因为内存不足。在官方文档中,有解决方案。 https://success.docker.com/article/what-c​​auses-a-container-to-exit-with-code-137


推荐阅读