sonarQube
关于 sonarQube,以前学习过一次。
参见 sonarQube 入门
安装 mysql
作用
安装sonarqube 使用mysql版本必须大于5.7,并且数据中心版本不支持mysql。
一旦所有SonarQube表都使用InnoDB引擎,首先要做的是使用innodb_buffer_pool_size参数为MySQL实例分配最大量的RAM,并为参数提供至少15Mb query_cache_size。
运行
$ docker run -d -p 3306:3306 --name mysql-sonarqube -e "MYSQL_ROOT_PASSWORD=123456" mysql:5.7
我们直接下载 5.7 版本的 mysql
- 查看
docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
998057d73807 mysql:5.7 "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql-sonarqube
配置 sonarqube 数据库
登录进入 mysql
进入容器
$ docker exec -it mysql-sonarqube /bin/bash
登录 mysql
root@998057d73807:/# mysql -uroot -p
Enter password:
配置 sonar 相关信息
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
mysql> FLUSH PRIVILEGES;
安装 sonarQube
文件准备
- 创建文件
mkdir -p /opt/sonarqube
- 赋权
sudo chmod -R 777 /opt/sonarqube
运行镜像
docker run -d --name devops-sonarqube \
-p 9000:9000 \
-e sonar.web.context=/sonarqube \
-e sonar.jdbc.username=sonar \
-e sonar.jdbc.password=sonar \
-e "sonar.jdbc.url=jdbc:mysql://192.168.99.100:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance" \
-v /opt/sonarqube/conf:/opt/sonarqube/conf \
-v /opt/sonarqube/data:/opt/sonarqube/data \
-v /opt/sonarqube/logs:/opt/sonarqube/logs \
-v /opt/sonarqube/extensions:/opt/sonarqube/extensions \
sonarqube:7.6-community
主要是指定了一个 mysql 的连接信息。
- 状态查看
$ docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4f88e667241e sonarqube:7.6-community "./bin/run.sh" 30 seconds ago Exited (0) 25 seconds ago devops-sonarqube
报错说明
$ docker logs -f devops-sonarqube
异常如下:
ERROR Unable to create file /opt/sonarqube/logs/es.log java.io.IOException: Permission denied
配置说明
使用环境变量SONARQUBE_JDBC_USERNAME,SONARQUBE_JDBC_PASSWORD并且SONARQUBE_JDBC_URL已弃用,并将在将来的版本中停止工作。
sonarqube_conf:/opt/sonarqube/conf:配置文件,例如 sonar.properties
sonarqube_data:/opt/sonarqube/data:数据文件,例如嵌入式H2数据库和Elasticsearch索引
sonarqube_logs:/opt/sonarqube/logs
sonarqube_extensions:/opt/sonarqube/extensions:插件,如语言分析器
挂载
sonarqube_conf:/opt/sonarqube/conf:配置文件,例如 sonar.properties
sonarqube_data:/opt/sonarqube/data:数据文件,例如嵌入式H2数据库和Elasticsearch索引
sonarqube_logs:/opt/sonarqube/logs
sonarqube_extensions:/opt/sonarqube/extensions:插件,如语言分析器
- 挂载参考:
docker run -d --name sonarqube
-p 9000:9000
-v /path/to/conf:/opt/sonarqube/conf
-v /path/to/data:/opt/sonarqube/data
-v /path/to/logs:/opt/sonarqube/logs
-v /path/to/extensions:/opt/sonarqube/extensions
sonarqube:7.6-community
web 相关配置
如果要修改sonarqube web 访问的根路径需要配置参数
sonar.web.context=/sonarqube #将根路径修改为/sonarqube,默认的路径为/
其它配置参数:
sonar.web.host=192.0.0.1
sonar.web.port=80
sonar.web.context=/sonarqube
配置Elasticsearch存储路径
默认情况下,Elasticsearch数据存储在 $SONARQUBE-HOME/data
中,但不建议用于生产实例。
相反,您应该将此数据存储在其他位置,最好是在具有快速I/O的专用卷中。
除了保持可接受的性能之外,这样做还可以简化SonarQube的升级。
编辑 $SONARQUBE-HOME/conf/sonar.properties
以配置以下设置:
sonar.path.data=/var/sonarqube/data
sonar.path.temp=/var/sonarqube/temp
异常
docker logs -f devops-sonarqube
可以看到异常日志:
ERROR Unable to create file /opt/sonarqube/logs/es.log java.io.IOException: Permission denied
登录访问
直接登录 http://192.168.99.100:9000