一 背景
SonarQube是用来干嘛的,相信大家也很清楚了,它关注的是代码质量和代码安全,做的就是代码检查的事。它的宗旨就是让开发人员写出更干净更安全的代码。
随着我们公司后端同学的增加,需要更关注代码的质量情况,我们也没有很多的时间去做代码的review工作,那么就会想到通过一些静态代码检查的平台工具来解决。而SonarQube毋庸置疑,是当前各大互联网公司最常用的代码检查平台,除非自己公司有自研的代码检查平台,否则通常都会使用SonarQube。
所以,我们也选择了SonarQube。
二 SonarQube的安装
其实SonarQube的安装方式,可以直接使用SonarQube自带的启动脚本直接启动,也可以通过官方维护的Docker镜像直接启动。
这里我们不探讨启动脚本方式的启动。
我们来看看如何通过docker-compose方式启动。
首先,我们先确定一下我们安装的脚本的镜像和版本:
postgres:13.3
PostgreSQL数据库镜像sonarqube:8.9-community
SonarQube镜像
先写docker-compose.yml
的YAML文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42SONAR_HOME=/opt/sonarqube
mkdir -p ${SONAR_HOME}
cd ${SONAR_HOME}
mkdir ${SONAR_HOME}/sonarqube_data ${SONAR_HOME}/sonarqube_extensions ${SONAR_HOME}/sonarqube_logs ${SONAR_HOME}/sonarqube_temp ${SONAR_HOME}/postgresql ${SONAR_HOME}/postgresql/data
cat << EOF > docker-compose.yml
version: "2"
services:
sonarqube:
image: sonarqube:8.9-community
depends_on:
- db
ports:
- "9000:9000"
networks:
- sonarnet
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
volumes:
- /opt/sonarqube/sonarqube_data:/opt/sonarqube/data
- /opt/sonarqube/sonarqube_extensions:/opt/sonarqube/extensions
- /opt/sonarqube/sonarqube_logs:/opt/sonarqube/logs
- /opt/sonarqube/sonarqube_temp:/opt/sonarqube/temp
db:
image: postgres:13.3
networks:
- sonarnet
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
volumes:
- /opt/sonarqube/postgresql:/var/lib/postgresql
# This needs explicit mapping due to https://github.com/docker-library/postgres/blob/4e48e3228a30763913ece952c611e5e9b95c8759/Dockerfile.template#L52
- /opt/sonarqube/postgresql/data:/var/lib/postgresql/data
networks:
sonarnet:
driver: bridge
EOF
通过docker-compose启动命令直接启动1
docker-comose up -d
启动过程中,SonarQube镜像可能会启动不起来,会看到如下报错:1
2
3
4
5
6
7
8
9# 错误信息
ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
ERROR: Elasticsearch did not exit normally - check the logs at /opt/sonarqube/logs/sonarqube.log
# 解决方案
sysctl -w vm.max_map_count=262144
# 然后再启动
docker-compose up -d
通过以下命令可以看到SonarQube和使用的db都已正常启动1
2
3
4# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ad9ab7d39aea sonarqube:8.9-community "bin/run.sh bin/sona…" 5 seconds ago Up 4 seconds 0.0.0.0:9000->9000/tcp sonarqube_sonarqube_1
0e9cd5ae1431 postgres:13.3 "docker-entrypoint.s…" 6 seconds ago Up 5 seconds 5432/tcp sonarqube_db_1
最后,通过 http://[host]:9000 访问SonarQube,默认的账号密码是(admin、admin),登录之后会弹出修改密码界面直接修改一下密码,修改完密码之后就可以直接进入主页面了,如下:
三 安装中文包
进入应用市场:Administration -> Marketplace 搜索 Chinese Pack,点击后面的Install按钮直接安装,安装好之后会提示重启,根据提示直接重启,重启之后的界面就是中文界面了。