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

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 映射数据卷的目的,是为了实现数据持久化,这样的话 ,如果在启动容器的时候,少写了什么参数之类,或者后面想添加什么其他的参数,不会影响里面现有的业务数据之类的。

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的数据库下面是否自动创建了相关的表。


微信图片_20220113210816.png


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


微信图片_20220113210844.png


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


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,然后在这个基础上再去扩展学习更深层次的内容。


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
15天前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
41 3
|
1月前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
128 1
|
2月前
|
网络安全 虚拟化 Docker
SSH后判断当前服务器是云主机、物理机、虚拟机、docker环境
结合上述方法,您可以对当前环境进行较为准确的判断。重要的是理解每种环境的特征,并通过系统的响应进行综合分析。如果在Docker容器内,通常会有明显的环境标志和受限的资源视图;而在云主机或虚拟机上,虽然它们也可能是虚拟化的,但通常提供更接近物理机的体验,且可通过硬件标识来识别虚拟化平台。物理机则直接反映硬件真实信息,较少有虚拟化痕迹。通过这些线索,您应该能够定位到您所处的环境类型。
52 2
|
2月前
|
存储 监控 Shell
docker的底层原理二:容器运行时环境
本文深入探讨了Docker容器运行时环境的关键技术,包括命名空间、控制组、联合文件系统、容器运行时以及分离的进程树,这些技术共同确保了容器的隔离性、资源控制和可移植性。
45 5
|
2月前
|
jenkins Java 持续交付
Docker搭建jenkins环境
这篇文章详细介绍了如何利用Docker搭建Jenkins环境,包括拉取Jenkins镜像、配置端口映射及初始化设置的步骤。
194 0
Docker搭建jenkins环境
|
3月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
3月前
|
虚拟化 Docker Windows
window 10专业版部署docker环境
本文介绍了如何在Windows 10专业版上部署Docker环境,包括安装步骤、配置镜像加速以及可能遇到的错误处理。
160 2
window 10专业版部署docker环境
|
2月前
|
Linux 持续交付 iOS开发
docker的使用(环境特殊时可以考虑使用)
docker的使用(环境特殊时可以考虑使用)
16 0
|
3月前
|
SQL 安全 数据库
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
531 1
|
4月前
|
Linux iOS开发 Docker
Docker技术概论(2):Docker环境的搭建
Docker技术概论(2):Docker环境的搭建
90 17