文章目录
  1. 1. 1.安装docker,docker-compose
  2. 2. 2.部署sonar
  3. 3. 3.部署sonar关联postgre数据库
  4. 4. 4.汉化

今天用docker在服务器上部署了个sonar,并push代码进行检测,各种指数相当低,先不谈代码优化,记录下在部署过程中碰到的个坑

1.安装docker,docker-compose

安装docker
安装docker-compose

2.部署sonar

docker部署sonar很简单,一句命令就行了,如下:
docker run -d --name sonarqube -p 9000:9000 sonarqube
之后便可以访问指定服务器的9000端口访问sonar,默认账户密码:admin/admin

此时会发现用的是内嵌的数据库,内嵌数据库无法扩展,也无法升级到新版本的SonarQube,并且不能支持将你的数据迁移至其他数据库引擎,内嵌数据库只能用于测试场景,于是使用链接数据库的方式重新部署,这里采用postgre。

docker stop,docker rm,一顿乱操作删除了之前创建的sonar,再调研一番如何链接postgre数据库,看上去也很简单,一种是docker启动的时候配置关于database参数。第二个也是大多数blog写的使用docker-compose同时部署了sonar和postgre两个docker容器,之间关联,一个docker-compose.yaml文件搞定。
讲真,第二种我试了,访问sonar貌似并没有链接数据库,可能脚本方面还存在什么问题,由于目前已经有了postgre服务,所以第二种没有去深究,想采用第一种方式,只增加部署一个sonar,试了,踩了个大坑如下:

3.部署sonar关联postgre数据库

部署命令:

1
2
docker run --name sonarqube -e SONARQUBE_JDBC_URL=jdbc:postgresql://*****:5432/sonar -e
POSTGRES_USER=sonar -e POSTGRES_PASSWORD=123456 -p 9000:9000 -d sonarqube

(其中sonar服务的地址,账户,密码根据自己实际的参数)
容器启动后总是莫名stop掉,通过docker logs查看日记发现有这么一句报错:

1
2
ERROR: [1] bootstrap checks failed
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

一脸懵,貌似跟Elasticsearch启动有啥关系,试了网上的很多种方法都不管用,翻译下面那句报错为:elasticsearch用户拥有的内存权限太小,至少需要262144,继续百度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
解决:
切换到root用户
执行命令:
sysctl -w vm.max_map_count=262144
查看结果:
sysctl -a|grep vm.max_map_count
显示:
vm.max_map_count = 262144

上述方法修改之后,如果重启虚拟机将失效,所以:
解决办法:
在 /etc/sysctl.conf文件最后添加一行
vm.max_map_count=262144
即可永久修改

再次启动,ok,打开sonar,界面最下面关于内嵌数据库的提醒没了,查看postgre,发现有数据,即生效。

4.汉化

追加一个中文插件的安装过程,administration->marketplace->search chinese->Chinese Pack install->restart sonarService即变为中文的了。

文章目录
  1. 1. 1.安装docker,docker-compose
  2. 2. 2.部署sonar
  3. 3. 3.部署sonar关联postgre数据库
  4. 4. 4.汉化