2016-04-02 7 views
5

Ich möchte mein benutzerdefiniertes SonarQube-Docker-Image erstellen, wobei einige Plugins bereits installiert sind, aber jedes Mal, wenn ich meinen Container ausführe, sind die Plugins nicht vorhanden. Es ist, als ob etwas die Plugins aus /opt/sonarqube/extensions/plugins löscht und die bundled-plugins dort kopiert.Manuelles Installieren von SonarQube-Plugins auf Docker image

Mein Dockerfile

FROM sonarqube 

ENV SONARQUBE_HOME /opt/sonarqube 

RUN wget "http://downloads.sonarsource.com/plugins/org/codehaus/sonar-plugins/sonar-scm-git-plugin/1.1/sonar-scm-git-plugin-1.1.jar" \ 
    && wget "https://github.com/SonarSource/sonar-java/releases/download/3.12-RC2/sonar-java-plugin-3.12-build4634.jar" \ 
    && wget "https://github.com/SonarSource/sonar-github/releases/download/1.1-M9/sonar-github-plugin-1.1-SNAPSHOT.jar" \ 
    && wget "https://github.com/SonarSource/sonar-auth-github/releases/download/1.0-RC1/sonar-auth-github-plugin-1.0-SNAPSHOT.jar" \ 
    && wget "https://github.com/QualInsight/qualinsight-plugins-sonarqube-badges/releases/download/qualinsight-plugins-sonarqube-badges-1.2.1/qualinsight-sonarqube-badges-1.2.1.jar" \ 
    && mv *.jar $SONARQUBE_HOME/extensions/plugins \ 
    && ls -lah $SONARQUBE_HOME/extensions/plugins 

Ich habe versucht, den Ordner-Eintrag, und listet meine gewünschten Plug-Ins. Aber wenn ich denselben Ordner aufliste, nachdem ich den Container gestartet habe, sind sie weg.

Ich habe auch versucht, die bundled-plugins ohne Glück zu entfernen.

Irgendwelche Ideen?

Antwort

10

Das Sonarqube Bild verwendet ein Volumen für das /extensions/ Verzeichnis, das in diesem Verzeichnis in den Akten ergibt sich nicht in das Image des Dateisystem gespeichert werden; siehe die Dockerfile

Um diese Erweiterungen in Ihrem Bild zu verpacken, müssen Sie sie außerhalb dieses Verzeichnisses und kopieren Sie diese Dateien in den /extensions/ in einem Einstiegspunkt Skript oder speichern Sie Ihre Plugins in einem eigenen Bild und montieren diese Plugins als Volumen beim Ausführen des Bildes; Sie können ein Beispiel finden, das hier tut; https://github.com/SonarSource/docker-sonarqube/blob/master/recipes.md

+0

, die das Problem löst. Vielen Dank! Übrigens, wo wäre der beste Ort, um zu fragen, ob JAR-Dateien als Releases in Github veröffentlicht werden? Zum Beispiel können Sie die JAR-Datei für dieses Plugin https://github.com/SonarSource/sonar-auth-github/releases im Abschnitt "Releases" herunterladen, nicht jedoch für neue Releases. Dasselbe passiert in den meisten Plugins, die ich gesehen habe. – fiunchinho

+0

Der beste Ort, um dies zu stellen, ist im Issue Tracker dieses Repositorys (und für die anderen Plugins). Überprüfen Sie, ob bereits eine Featureanforderung vorhanden ist. – thaJeztah

+0

Sie haben keine Probleme aktiviert:/ – fiunchinho

4

Beachten Sie, dass die angenommene Antwort nicht mehr zutrifft. Es sollte funktionieren, wenn Sie das aktuelle Eltern-Sonarqube-Bild direkt verwenden. Wenn also die Dockerfile in der Frage nicht funktioniert, hast du ein anderes Problem.

Siehe commit 80366e3419d698b4bba4447f153418ef64b3b705 für weitere Informationen.

Remove Volumen für „conf“, „Protokolle“ und „Erweiterungen“ Verzeichnisse explizite Deklaration von Volumen nur durch Anwendung gespeicherten Daten geeignet ist, das Volumen für konfigurierbare Dinge sind so gut wie nie angemessen (siehe Docker-Bibliothek/Offizielle Bilder # 2437).

Dies setzt commit 69fca2e zurück. Und entfernt zusätzlich die Deklaration Volume für "Erweiterungen" Verzeichnis.

0

Bevor Sonarqube 5.6, Plugins sind in einem Volumen gespeichert werden, so dass der entsprechende Befehl ist (nachdem der Startbehälter Sonarqube):

wget https://sonarsource.bintray.com/Distribution/sonar-auth-github-plugin/sonar-auth-github-plugin-1.2.jar -P `docker inspect -f '{{ (index .Mounts 1).Source }}' sonarqube`/plugins 
docker restart sonarqube