2016-05-31 1 views
0

Je suis confronté à un problème avec mon docker. J'ai ma propre image de SonarQube 3.6.2 qui comprend quelques règles personnalisées. J'ai essayé de le mettre dans un conteneur, mais si je lance SonarQube alors que j'essaie de démarrer mon conteneur, alors mon conteneur continue à redémarrer encore et encore.Docker redémarre à nouveau et agin

Je viens d'essayer chaque idée que j'avais: ENTRYPOINT (les deux formes: ENTRYPOINT["/sonarQube362/bin/linux-x86-64/sonar.sh", "start"] et ENTRYPOINT /sonarQube362/bin/linux-x86-64/sonar.sh start), CMD (les deux formes), à l'aide d'un tiers run.sh avec ces lignes de commande à l'intérieur:

#!/bin/bash 
set -e 

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

J'ai toujours le « Relancer » état sur mon conteneur et les journaux se plaint simplement que Sonar is restarted, encore une fois, et encore, et encore ...

Si mon Dockerfile se termine par CMD top par exemple, alors je peux docker exec -ti container bash en elle et exécuter l'une des commandes ci-dessus avec succès.

Avez-vous une idée de la raison pour laquelle, lorsque vous configurez une CMD ou une boucle ENTRYPOINT SonarQube/Docker redémarre?

Cheers,

+0

Que montrent les 'docker logs CONTAINER_NAME'? – jwodder

+0

Notez que 3.6.2 est une version ancienne. 4.5.6 est la version LTS actuelle, et 5.6, la prochaine LTS, est sur le point d'être publiée. –

+0

@jwodder: Il boucle simplement sur "SonarQube à partir ... SonarQube a commencé" – Olivier

Répondre

0

OK. Je viens de trouver la solution.

J'ai mis à jour le script sonar.sh pour modifier la COMMAND_LINE. Il était utilisé pour démoniser l'encapsuleur, je l'ai juste changé pour ne pas démoniser l'encapsuleur. Ainsi Docker peut garder la trace ...

Par souci de clarté, voici la ligne: Avant:

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

Après:

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

Bien sûr, vous pouvez à cela en utilisant awk ou sed tout en construisant l'image Docker, mais c'est un autre sujet ...

Espérons que cela aide, Salutations, Olivier