Docker 一次又一次地重新启动

Docker is restarting again and agin

我的 docker 遇到了问题。 我有自己的 SonarQube 3.6.2 图像,其中包含一些自定义规则。 我试图将它放入一个容器中,但是如果我在尝试启动我的容器时 运行 SonarQube,那么我的容器会一次又一次地重新启动。

我只是尝试了我的每一个想法:ENTRYPOINT(两种形式:ENTRYPOINT["/sonarQube362/bin/linux-x86-64/sonar.sh", "start"]ENTRYPOINT /sonarQube362/bin/linux-x86-64/sonar.sh start),CMD(两种形式),使用第三个party run.sh 里面有这些命令行:

#!/bin/bash
set -e

#nohup  /sonarQube362/bin/linux-x86-64/sonar.sh start
exec /sonarQube362/bin/linux-x86-64/sonar.sh start

我的容器上总是有 "Restarting" 状态,日志只是抱怨 Sonar is restarted,一次又一次,一次又一次...

例如,如果我的 Dockerfile 以 CMD top 结尾,那么我可以 docker exec -ti container bash 进入它并 运行 成功执行上述任何命令。

你们知道为什么设置为 CMDENTRYPOINT SonarQube/Docker 循环重启吗?

干杯,

好的。我刚找到解决方案。

我更新了 sonar.sh 脚本以更改 COMMAND_LINE。它曾经守护包装器,我只是将其更改为不守护包装器。因此 Docker 可以跟踪它...

为了清楚起见,这是一行: 之前:

#COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=$APP_NAME wrapper.pidfile=\"$PIDFILE\" wrapper.daemonize=TRUE $ANCHORPROP $IGNOREPROP $LOCKPROP"

之后:

COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=$APP_NAME wrapper.pidfile=\"$PIDFILE\" wrapper.daemonize=FALSE $ANCHORPROP $IGNOREPROP $LOCKPROP"

当然,您可以在构建 Docker 图像时使用 awksed,但这是另一个话题...

希望这对您有所帮助, 干杯, 奥利维尔