我想创建我的自定义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
但没有运气。
有什么想法吗?
答案 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