注意点:sonar7.9后不支持mysql
目录
一.docker安装sonar
第一种:数据库使用postgres
第二种:数据库使用mysql
二.docker-compose搭建
三.加入自定义bridge
一.docker安装sonar
首先创建挂卷目录
mkdir /data/sonarqube/conf
mkdir /data/sonarqube/data
mkdir /data/sonarqube/logs
mkdir /data/sonarqube/extensions
chmod 777 /data/sonarqube -R
第一种:数据库使用postgres
1.postgres安装
docker run -d --name pgdb -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -v /data/pgdata:/var/lib/postgresql/data -d postgres
2.sonar连接postgres容器
代码语言:javascript复制docker run -itd --name sonarqube --link pgdb
-p 9000:9000
-e SONARQUBE_JDBC_URL="jdbc:postgresql://pgdb:5432/sonar"
-e SONARQUBE_JDBC_USERNAME=sonar
-e SONARQUBE_JDBC_PASSWORD="sonar"
-e ES_JAVA_OPTS="-Xms1g -Xmx1g"
-v /data/sonarqube/conf:/opt/sonarqube/conf
-v /data/sonarqube/data:/opt/sonarqube/data
-v /data/sonarqube/logs:/opt/sonarqube/logs
-v /data/sonarqube/extensions:/opt/sonarqube/extensions
sonarqube
在执行命令后,sonar没启动成功,
查看日志:
docker logs sonarqube
如果运行出现:
max virtual memory areas vm.max_map_count 65530 is too low, increase to at least 262144
表示没有足够的内存权限
root用户执行:
sysctl -w vm.max_map_count=262144
永久修改:
在 /etc/sysctl.conf 文件最后添加一行
vm.max_map_count=262144
然后在运行(docker start sonarqube)
第二种:数据库使用mysql
1.mysql
docker run -d --name mysql56 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.6
2.sonar安装,连接mysql容器
代码语言:javascript复制docker run -d --name sonarqube --link mysql56
-p 9000:9000
-e sonarqube_jdbc_username=sonar
-e sonarqube_jdbc_password="sonar"
-e sonarqube_jdbc_url="jdbc:mysql://192.168.0.111:3306/sonar?useunicode=true&characterencoding=utf8&rewritebatchedstatements=true&useconfigs=maxperformance"
-v /data/sonarqube/conf:/opt/sonarqube/conf
-v /data/sonarqube/data:/opt/sonarqube/data
-v /data/sonarqube/logs:/opt/sonarqube/logs
-v /data/sonarqube/extensions:/opt/sonarqube/extensions
sonarqube
3.配置mysql的数据库和用户
代码语言:javascript复制CREATE DATABASE sonar DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;
默认账号admin/admin,进入sonar,查看是否连接成功,
安装插件
先安装 Chinese pacK (中文包),其他的可以先尝试安装,如果安装不上,手动安装
插件库: https://docs.sonarqube.org/display/PLUG/Plugin Library
checkstyle
findbugs
sonarjs(前端代码分析)
sonarJava (java代码分析,插件库里的名称,在线安装的名称是:Java Code Quality and Security)
二.docker-compose搭建
具体详细看: 运维篇 docker知识回顾 9.4节“Docker-compose编写”和9.5有详细说明
代码语言:javascript复制version: '2'
services:
pgdb:
image: postgres
ports:
- 5432:5432
volumes:
- /data/pgdata:/var/lib/postgresql/data
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: "sonar"
container_name: pgdb
sonarqube:
image: sonarqube
ports:
- 9000:9000
volumes:
- /data/sonarqube2/conf:/opt/sonarqube/conf
- /data/sonarqube2/data:/opt/sonarqube/data
- /data/sonarqube2/logs:/opt/sonarqube/logs
- /data/sonarqube2/extensions:/opt/sonarqube/extensions
depends_on:
- pgdb
links:
- pgdb:db
environment:
SONARQUBE_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONARQUBE_JDBC_USERNAME: sonar
SONARQUBE_JDBC_PASSWORD: "sonar"
ES_JAVA_OPTS: "-Xms1g -Xmx1g"
container_name: sonarqube
三.加入自定义bridge
一般我们会在jenkins配置sonar信息,然后推送扫描信息到sonar,如果都是用docker搭建的,那么同一台宿主机上的jenkins和sonar就要加入相同的bridge
没有自定义网络就创建一个,要保证jenkins也是这个网络。
docker network create dep_network
加入:
docker network connect dep_network sonarqube