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

时间:2016-04-02 18:04:22

标签: docker sonarqube

我想创建我的自定义SonarQube docker镜像,已安装了一些插件,但每次运行我的容器时,插件都不存在。这就像从/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但没有运气。

有什么想法吗?

3 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:7)

请注意,接受的答案不再适用。如果您直接使用最近的父级sonarqube图像,它应该工作。因此,如果问题中提到的Dockerfile不起作用,则会遇到其他问题。

有关详细信息,请参阅提交80366e3419d698b4bba4447f153418ef64b3b705

  

删除" conf"," log"和"扩展"目录   卷的显式声明仅适用于存储的数据   应用程序,可配置事物的数量几乎从不   适当的(见docker-library / official-images#2437)。

     

这将恢复提交69fca2e。另外删除声明   "扩展"的数量。目录

答案 2 :(得分:0)

在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