在Docker镜像上手动安装SonarQube插件

我想创build我的自定义SonarQube泊坞窗图像,已经安装了一些插件,但每次运行我的容器时,插件都不在那里。 这就像是从/opt/sonarqube/extensions/plugins删除插件,并在那里复制bundled-plugins

我的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 

我试着列出文件夹,并列出了我所需的插件。 但是,如果我在启动容器后列出相同的文件夹,它们就会消失。

我也尝试删除bundled-plugins没有运气。

有任何想法吗?

Sonarqube图像为/extensions/目录使用 ,导致该目录中的文件不被存储在图像的文件系统中; 请参阅Dockerfile

要将这些扩展名打包到映像中,需要该目录之外 ,然后将这些文件复制到入口点脚本中的/extensions/ ,或将您的插件存储在单独的映像中,并在运行映像时将这些插件作为卷装入; 你可以在这里find一个例子。 https://github.com/SonarSource/docker-sonarqube/blob/master/recipes.md

注意接受的答案不再是真实的。 如果您直接使用最近的父声纳图像,它应该工作。 所以,如果问题中提到的Dockerfile不起作用,则会遇到不同的问题。

有关更多信息,请参见提交80366e3419d698b4bba4447f153418ef64b3b705 。

删除“conf”,“logs”和“extensions”目录的卷volume的明确声明只适用于应用程序存储的数据,可configuration的卷的卷几乎是不合适的(参见docker-library / official-images#2437)。

这将恢复提交69fca2e。 另外删除“extensions”目录的音量声明。

SonarQube 5.6之前 ,插件存储在一个卷,所以适当的命令(启动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