之前在windows上安装过sonar server,突然想在我的linux机器上的docker里装一个容器版的sonar。
第一步:docker搜索sonar镜像
docker search sonar
也可以直接去dockerHub里找到sonrqube,然后选择一个tag来下载。https://hub.docker.com/_/sonarqube?tab=tags
第二步:下载sonar的docker image
docker pull sonarqube:6.7.5
这里我选择了6.7.5的这个tag,对应sonarqube的版本也是6.7.5.
第三步:创建sonar 容器,这一步我会多讲一点
由于之前在windows上跑过sonarqube server,跑之前需要在sonarqube的文件夹下的sonarqube-6.7.5\sonarqube-6.7.5\conf\sonar.properties文件中配置一些参数才能跑起来,而运行sonarqube的docker容器的话就没发直接去改这个文件,但是可以通过-e带环境变量的方式设置这些配置。
我首先尝试了这个命令:
docker run --name yuker_sonar -e SONARQUBE_JDBC_URL=jdbc:mysql://localhost:3306/sonarlts?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false -e SONARQUBE_JDBC_USERNAME=root SONARQUBE_JDBC_PASSWORD=root sonar.sorceEncoding=UTF-8 sonar.login=admin sonar.password=admin -p 9000:9000 -d sonarqube:6.7.5
--name是指定容器的主机名
-p 是配置容器端口转发
-d 是后台运行
接下来就是sonar的参数配置:
-e SONARQUBE_JDBC_URL是指定sonarqube的数据库,因为sonar的运行结果是要存到数据库里去的
-e SONARQUBE_JDBC_USERNAME是指定数据库的用户名
-e SONARQUBE_JDBC_PASSWORD是指定数据库的密码、
-e sonar.sorceEncoding是指定编码方式
-e sonar.login是指定sonar的登陆用户名
-e sonar.password是指定登陆密码
但是运行的时候又问题,因为指定jdbc数据库的时候用到了jdbc:mysql://localhost:3306/sonarlts?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false 提示说不认识这个&符号,应该要用转义字符,后面想想算了不用mysql了,直接用sonar自带的h2数据库算了,就简化了下启动命令:
docker run --name yuker_sonar -e sonar.sorceEncoding=UTF-8 -e sonar.login=admin -e sonar.password=admin -p 9000:9000 -d sonarqube:6.7.5
启动后访问在linux上访问localhost:9000,可以成功进入sonar的ui界面。