docker 停止命令 GlassFish

标签 docker glassfish

我有一个装有 GlassFish 的容器。 启动我的容器的命令是

/opt/glassfish4/glassfish/bin/asadmin start-domain --verbose

当我使用停止命令停止容器时,它停止并出现错误。它以代码 137 停止(它被 OOMKiller 销毁)。

3 秒前退出 (137)

我把stop命令的-t参数改成1000,结果还是一样——错误码137

当我运行命令时

docker exec -it ecai/opt/glassfish4/glassfish/bin/asadmin 停止域

容器在 2 秒内正常停止,代码为 0。

如何设置标准停止命令,使容器以代码 0 停止?

最佳答案

docker stop 向主进程发送一个 SIGTERM,等待一个宽限期(默认为 10 秒)让进程停止,如果进程没有自行关闭,它会发送一个 SIGKILL .

问题在于 Glassfish 在收到 SIGTERM 时突然终止。

解决此问题的方法是创建一个 shell 脚本作为 Glassfish 图像的入口点,您可以在其中管理接收到的信号。为此,您可以使用 trap 来执行如下操作。

#!/bin/bash

_term() {
    /opt/glassfish4/glassfish/bin/asadmin stop-domain
}

trap _term SIGTERM

/opt/glassfish4/glassfish/bin/asadmin start-domain --verbose

希望这对您有所帮助,祝您好运!

关于docker 停止命令 GlassFish,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43539982/

相关文章:

linux - 使用 docker 应用程序在外部硬盘驱动器中创建一个新目录

docker - Jenkins CloudBees Docker Build插件如何设置其Shell路径

java - JVM 启动失败 : java. io.IOException : Cannot run program "/usr/libexec/StartupItemContext; error=2, No such file or directory

java - Glassfish上本地EJB的集成测试

java - GWT 模块可能需要(重新)编译远程调试

php - 在 Docker 中创建 Laravel 的开发环境

docker - 无法为Hyperledger Service Windows 10创建容器

jenkins - 如果我们可以直接暴露80端口,那么反向代理有什么好处呢?

java - Glassfish : "Non Transactional Settings" option in JDBC Pools

java - maven-glassfish-plugin 无法获取 maven-metadata.xml