docker 安装 sonarQube
sonarQube 是一款开源代码检测工具。本篇介绍通过 docker 来安装。大概的一个运作流程是这样的,先通过 sonar-scanner 插件扫描代码,把数据存储到数据库,sonarQube 读取数据库,将数据库展现在 web 平台。
一、docker 安装 mysql 或 postgresql
首先需要安装数据库,开源的可以用 mysql 或者 postgresql 。官网上已经声明 sonarQube 7.9 版本以上不再支持 mysql 了,我们为了以后升级新版本不做数据库迁移,尽量使用 postgresql 。下面介绍这两种数据库安装配置方法:
mysql
1.先拉取 mysql 镜像(sonarqube:7.4 不支持 mysql:5.7 以上):
docker pull mysql:5.7
2.创建工作目录,为接下来的挂载自定义映射路径做准备
mkdir -p /usr/mysql/conf
mkdir -p /usr/mysql/logs
mkdir -p /usr/mysql/data
3.创建网络
docker network create sonarqube-tier
4.创建容器并运行
docker run --name mysql -d -p 3306:3306--net sonarqube-tier -v /usr/mysql/conf:/etc/my.cnf.d -v /usr/mysql/logs:/logs -v /usr/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--restart always \
--privileged=true \
--network-alias mysql \
mysql:5.7
- -p 3306:3306:将容器 3306 映射到宿主机端口 3306
- -v /usr/mysql/conf:/etc/my.cof.d:将容器下的 /etc/my.cof.d 挂载到宿主机 /usr/mysql/conf
- -e MYSQL_ROOT_PASSWORD=123456:设置 root 密码 123456
- --restart always:容器退出时总是重启
- --privileged=true:挂载主机目录Docker访问出现Permission denied的解决办法
- --net sonarqube-tier:容器接入自定义网络
- --network-alias mysql:给容器起个网络别名
查看容器是否运行正常
5.允许外网访问
先进入容器
docker exec -it mysql /bin/bash
操作mysql
mysql -uroot -p # 密码 123456
GRANT ALL ON *.* TO 'root'@'%'; #所有网络都可访问
create database sonar; #创建 sonarqube 数据库 # 添加远程登录用户:sonar ,并授予权限。
CREATE USER 'sonar'@'%' IDENTIFIED WITH mysql_native_password BY 'sonar';
GRANT ALL PRIVILEGES ON *.* TO 'sonar'@'%'; flush privileges; # 刷新权限
postgresql
1.拉取 postgresql 镜像
docker pull postgresql:latest
2.创建工作目录,为接下来的挂载自定义映射路径做准备
mkdir -p /home/sonar/postgres/postgresql
mkdir -p /home/sonar/postgres/data
3.创建网络
docker network create sonarqube-tier
4.创建容器并运行
docker run --name postgres -d -p 5432:5432 --net sonarqube-tier \
-v /home/sonar/postgres/postgresql:/var/lib/postgresql \
-v /home/sonar/postgres/data:/var/lib/postgresql/data \
-v /etc/localtime:/etc/localtime:ro \
-e POSTGRES_USER=sonar \
-e POSTGRES_PASSWORD=sonar \
-e POSTGRES_DB=sonar \
-e TZ=Asia/Shanghai \
--restart always \
--privileged=true \
--network-alias postgres \
postgres:latest
- -p 5432:5432:将容器 5432 映射到宿主机端口 5432
- -v /home/sonar/postgres/postgresql:/var/lib/postgresql:将容器下的 /var/lib/postgresql 挂载到宿主机 /home/sonar/postgres/postgresql
- -v /etc/localtime:/etc/localtime:ro:设置容器与宿主机时间一致
- --e POSTGRES_USER=sonar:设置数据库用户名
- -e POSTGRES_PASSWORD=sonar:设置数据库密码
- -e POSTGRES_DB=sonar:新建db
- -e TZ=Asia/Shanghai:设置时区
- --restart always:容器退出时总是重启
- --privileged=true:挂载主机目录Docker访问出现Permission denied的解决办法
- --net sonarqube-tier:容器接入自定义网络
- --network-alias mysql:给容器起个网络别名
二、安装 sonarQube
1.拉取镜像,我这里拉取的是 tag 是 7.4-community(7.6及以上的版本与 jenkins 的 sonar-scanner 插件暂时不兼容,以后官方会解决兼容问题)
docker pull sonarqube:7.4-community
2.创建工作目录
mkdir -p /data/sonarqube
3.修改系统参数
echo "vm.max_map_count=262144" > /etc/sysctl.conf
sysctl -p
4.运行一个test容器
docker run -d --name sonartest sonarqube:7.4-community
将容器内重要文件复制到宿主机
docker cp sonartest:/opt/sonarqube/conf /data/sonarqube
docker cp sonartest:/opt/sonarqube/data /data/sonarqube
docker cp sonartest:/opt/sonarqube/logs /data/sonarqube
docker cp sonartest:/opt/sonarqube/extensions /data/sonarqube
然后删除此容器
docker rm sonartest
修改文件夹权限
chmod -R 777 /data/sonarqube/
5.创建容器并运行
sonarQube + mysql
docker run -d --name sonar -p 9090:9000 \
-e ALLOW_EMPTY_PASSWORD=yes \
-e SONARQUBE_DATABASE_USER=sonar \
-e SONARQUBE_DATABASE_NAME=sonar \
-e SONARQUBE_DATABASE_PASSWORD=sonar \
-e SONARQUBE_JDBC_URL="jdbc:mysql://mysql:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" \
--net sonarqube-tier \
--privileged=true \
-v /data/sonarqube/logs:/opt/sonarqube/logs \
-v /data/sonarqube/conf:/opt/sonarqube/conf \
-v /data/sonarqube/data:/opt/sonarqube/data \
-v /data/sonarqube/extensions:/opt/sonarqube/extensions\
sonarqube:7.4-community
sonarQube + postgresql
方法一
docker run -d --name sonar -p 9090:9000 \
-e ALLOW_EMPTY_PASSWORD=yes \
-e SONARQUBE_DATABASE_USER=sonar \
-e SONARQUBE_DATABASE_NAME=sonar \
-e SONARQUBE_DATABASE_PASSWORD=sonar \
-e SONARQUBE_JDBC_URL="jdbc:postgresql://postgres:5432/sonar" \
--net sonarqube-tier \
--privileged=true \
--restart always \
-v /data/sonarqube/logs:/opt/sonarqube/logs \
-v /data/sonarqube/conf:/opt/sonarqube/conf \
-v /data/sonarqube/data:/opt/sonarqube/data \
-v /data/sonarqube/extensions:/opt/sonarqube/extensions\
sonarqube:7.4-community
若这种方式出现连不上数据库 postgres 的问题,可参照第二种方法
方法二
1)找到 /data/sonarqube/conf/ 路径下的文件 sonar.properties,修改如下并保存
# 找到如下配置去掉注释。并赋值 username,password
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar # 去掉 sonar.jdbc.url 注释,配置url
#----- PostgreSQL 9.3 or greater
# By default the schema named "public" is used. It can be overridden with the parameter "currentSchema".
sonar.jdbc.url=jdbc:postgresql://postgres:5432/sonar
2)使用docker命令创建容器
docker run -d --name sonar -p 9090:9000 \
--net sonarqube-tier \
--privileged=true \
--restart always \
-v /data/sonarqube/logs:/opt/sonarqube/logs \
-v /data/sonarqube/conf:/opt/sonarqube/conf \
-v /data/sonarqube/data:/opt/sonarqube/data \
-v /data/sonarqube/extensions:/opt/sonarqube/extensions\
sonarqube:7.4-community
6.浏览器输入http://ip:9090,开始初始化数据库,这个时间过程比较长,大概几分钟。初始化成功后进入登录界面,账号:admin 密码:admin
7.新版本sonaqube可以去市场搜索中文语言包如下。我这个为了兼容jenkins插件,用的是7.4版本,需要去官网下对应的中文包。
中文语言包下载地址:https://github.com/SonarQubeCommunity/sonar-l10n-zh/tags 。找到自己版本对应的中文包。
将 jar 包放入 /data/sonarqube/extensions/plugins ,重启 sonarqube。
docker 安装 sonarQube的更多相关文章
- SonarQube学习(一)- 使用Docker安装SonarQube(亲测可用)
一.前言 不得不吐槽下,现在的博客写的真太扯淡了,就网上写的使用docker安装SonarQube而言,搜到十篇文章,最少9篇照着操作配置都不可用,卡在SonarQube无法启动.自然,我也是被折磨的 ...
- docker安装sonarqube及实际应用
由于平台的多样化,在不同环境的安装方式可能也不一样,为了避免环境不一致带来的差异,特记一笔容器安装: 一.Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题. 1. ...
- docker安装sonarqube
目录 一.sonarqube简介 二.安装postgresql数据库 三.sonarqube安装 四.使用教程 五.参考 一.sonarqube简介 SonarQube是管理代码质量的一个开放平台,可 ...
- 使用Docker安装SonarQube
需先安装docker和docker-compose.见:https://www.cnblogs.com/hackyo/p/9280042.html 在任意目录下新建文件docker-compose.y ...
- docker + mysql安装sonarqube
docker sonarqube地址:https://hub.docker.com/_/sonarqube docker mysql地址:https://hub.docker.com/_/mysql ...
- Docker方式安装SonarQube
获取镜像 docker pull postgres: docker pull sonarqube:-community 启动镜像 docker run -d -p : -e POSTGRES_PASS ...
- Docker安装和使用(转)
(转)原文地址:https://www.cnblogs.com/xiewenming/p/7903247.html 一,安装Docker 1.1 安装之前保持一个干净的Docker环境 sudo yu ...
- 使用docker搭建sonarqube
sonarqube是一款代码质量检查工具,使用sonar扫描我们写过的代码,可以有助于检查出代码的bug.规范性和健壮性,有助于提高我们的代码质量. 一.安装docker 安装完成之后,命令行输入 d ...
- 理解Docker(1):Docker 安装和基础用法
本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
随机推荐
- SQL关联子查询
SQL关联子查询执行顺序: 1.先取到主查询中的相关数据,一次取一行主查询的数据 2.然后传入子查询,进行子查询 3.最后做主查询where筛选,注意子查询的where条件同样需要加在主查询后 参考: ...
- RabbitMQ 安装与界面管理
RabbitMQ 安装与界面管理 RabbitMQ概述 官网:https://www.rabbitmq.com/ RabbitMQ是部署最广泛的开源消息代理. RabbitMQ拥有成千上万的用户,是最 ...
- 「CF85E」 Guard Towers
「CF85E」 Guard Towers 模拟赛考了这题的加强版 然后我因为初值问题直接炸飞 题目大意: 给你二维平面上的 \(n\) 个整点,你需要将它们平均分成两组,使得每组内任意两点间的曼哈顿距 ...
- c语言:输出汉字编码
#include<stdio.h> main() { //char a[5]; //strcpy(a,"啊"); char a[5]="职"; pr ...
- 你好,我是B树
一.什么是B树? B树是一棵是具备以下特点的有根树. 1.节点属性 a)x.n:为节点中存储的关键字个数. b)x.key:为节点中存储的关键字.x.key1.x.key2 ... x.keyx.n ...
- [刘阳Java]_酷炫视频播放器制作_界面篇
今天开始分享一篇酷炫播放器制作,包括界面+JS.整个案例非常类似腾讯视频,优酷视频,爱奇艺视频.我们先看一下效果图,然后这篇文章主要界面篇 是不是效果比较酷炫,那么我接着来给大家说一下这个界面设计思路 ...
- [刘阳Java]_SpringMVC访问静态资源_第9讲
有些时候我们在使用SpringMVC的时候造成无法访问静态资源文件(如:html,js,css,image等等).其主要的原因出在web.xml文件我们设置SpringMVC前端控制器的映射路径 &l ...
- Day8 方法详解及递归思想.
何为方法 Java方法是语句的集合,它们在一起执行一个功能. 方法是解决一类问题步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 设计方法的原则: 方法的本意是功能块,就是实 ...
- P2476-记忆化搜索
链接 DP? 我们看看,这个状态似乎有亿点点多. 我们看看数据范围,数量不超过5,颜色数不超过15. 15维DP显然不靠谱. 那么我们就思考一下--个数? 记忆化搜索可ac: #include< ...
- Linux基础服务搭建综合
Linux服务综合搭建的文章目录 =============================================== 1.foundation创建yum仓库 2.部署DNS 3.将YUM源 ...