使用Docker搭建Sonarqube代码扫描环境

Sonarqube环境搭建


这里推荐使用docker进行搭建,其他方式搭建,可参考之前的文章:SonarQube环境搭建

使用Docker 搭建Sonar的代码扫描环境:

1、先创建好几个目录,用来挂在docker数据卷,方便以后查看日志之类的,不用每次都进入容器里面看

cd /home/jenkins/docker_volume
mkdir postgresql  sonarqube
cd sonarqube
mkdir data extensions  logs

2、使用docker命令安装postgresql数据库以及sonarqube服务端

下载镜像:
docker pull postgres
docker pull sonarqube
启动postgresql镜像:
cd /home/jenkins/docker_volume
通过下面的命令会启动一个postgresql的实例,并创建一个和用户名相同的数据库
docker run -itd --name postgresql -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -p 5432:5432 -v $PWD/postgresql:/var/lib/postgresql/data  postgres

启动sonarqube镜像:
注意:SONARQUBE_JDBC_URL中指定的数据库如果手动改成了其他的话,是需要先在postgresql上创建好数据库的
docker run -itd --name sonarqube -p 9000:9000 --link postgresql:db  \
-e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -e SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar   \
-v $PWD/sonarqube/data:/opt/sonarqube/data  -v $PWD/sonarqube/extensions:/opt/sonarqube/extensions -v $PWD/sonarqube/logs:/opt/sonarqube/logs   sonarqube

3、检查是否搭建成功a),通过navicat工具连接PostgreSQL,检查是否可以连接,并且可以查看sonar的数据库下面是否自动创建了相关的表。


使用Docker搭建Sonarqube代码扫描环境


b),检查sonarqube的服务端的地址是否可以正常访问:


使用Docker搭建Sonarqube代码扫描环境


搭建过程中遇到的问题&&注意事项


1、启动sonarqube镜像的时候,可能会报错,日志中会提示

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] , 解决方法:

编辑 /etc/sysctl.conf,追加以下内容:

vm.max_map_count=262144

保存后,执行:

sysctl  -p

2、启动可能报无法连接到数据库 ,需要检查数据库是否提前创建好。

3、postgresql的容器被删除重新启动后,如果重启sonarqube的容器,那么将会报错:Error response from daemon: Cannot link to a non running container: /postgresql AS /sonarqube/db

解决方案:

执行命令:service docker restart

4、如果大家从网上看其他人写的博客什么的,启动sonarqube镜像的时候,可能还会暴露9092端口 ,我查了一圈资料,目前没看到这个端口干什么用的,可以暂时不映射这个端口,后续如果出现问题 可以再进行处理。




总结



1、用docker进行容器化部署的时候,为什么要使用-v参数映射数据卷呢?

映射数据卷的目的,是为了实现数据持久化,这样的话 ,如果在启动容器的时候,少写了什么参数之类,或者后面想添加什么其他的参数,不会影响里面现有的业务数据之类的。


2、平常在学习技术的时候,应该怎么样去学习呢?

  1. 要多关注行业的动态,多跟同行的人去交流,了解一下大家平时都在用些什么技术或者工具,自己没听过的,可以去简单了解一下,扩宽一下自己的知识面。
  2. 选定一个要学习的内容之后,可以采用自底向上/自顶向下的方式去进行学习,即 可以先从最基础的语法等开始学,然后再运用到工作中,也可以先看简单的用法,先弄出一个demo,然后在这个基础上再去扩展学习更深层次的内容。


上一篇:阿里云ECS 7天实践训练营 Class3 微擎构建微信公众号管理系统 学习笔记


下一篇:使用Docker生成SSL证书