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
进入它并 运行 成功执行上述任何命令。
你们知道为什么设置为 CMD
或 ENTRYPOINT
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 图像时使用 awk
或 sed
,但这是另一个话题...
希望这对您有所帮助,
干杯,
奥利维尔
我的 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
进入它并 运行 成功执行上述任何命令。
你们知道为什么设置为 CMD
或 ENTRYPOINT
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 图像时使用 awk
或 sed
,但这是另一个话题...
希望这对您有所帮助, 干杯, 奥利维尔