1 - SonarQube镜像

https://hub.docker.com/_/sonarqube/

Dockerfile - 7.9.1-community

https://github.com/SonarSource/docker-sonarqube/blob/8ae0fadc72fef64334998e811f1b9cf68a458a2c/7/community/Dockerfile

2 - 准备动作

永久修改Linux系统级别的参数

[root@node201 ~]# vim /etc/sysctl.conf
[root@node201 ~]# cat /etc/sysctl.conf |grep -v "#"
vm.max_map_count = 262144
fs.file-max = 65536
[root@node201 ~]#
[root@node201 ~]# vim /etc/security/limits.conf
[root@node201 ~]# cat /etc/security/limits.conf |grep -v "#"
* soft nofile 65536
* hard nofile 65536
[root@node201 ~]#
[root@node201 ~]# reboot
......
......
......
[root@node201 ~]# sysctl vm.max_map_count
vm.max_map_count = 262144
[root@node201 ~]# sysctl fs.file-max
fs.file-max = 65536
[root@node201 ~]# ulimit -n
65536
[root@node201 ~]# ulimit -u
31155
[root@node201 ~]#

3 - 拉取Sonar镜像并启动

3.1 拉取镜像

命令

docker pull postgres:10
docker pull sonarqube:7.9.1-community

实例

[root@md200 ~]# docker pull postgres:10
10: Pulling from library/postgres
d599a449871e: Pull complete
eadd55e4a4ae: Pull complete
17eea069a47f: Pull complete
22b703021b03: Pull complete
5fa72174baec: Pull complete
338e0b17322b: Pull complete
05fd528a5e36: Pull complete
c224328d751f: Pull complete
f4319784a7ce: Pull complete
6b0ef024e116: Pull complete
5bc4176bd4c3: Pull complete
79c29b3c031a: Pull complete
9419079907eb: Pull complete
4b9b9c707beb: Pull complete
Digest: sha256:74e63f8b55e9b0ca55b78abb203d01e47c5ac7d3f10af09f91d5932943c6bb14
Status: Downloaded newer image for postgres:10
docker.io/library/postgres:10
[root@md200 ~]#
[root@md200 ~]#
[root@md200 ~]# docker pull sonarqube:7.9.1-community
7.9.1-community: Pulling from library/sonarqube
000eee12ec04: Pull complete
2f1dc2bdcfe1: Pull complete
eec880363624: Pull complete
8992c959a11d: Pull complete
25ff10872c55: Pull complete
9a775036a9e6: Pull complete
10640c614c1e: Pull complete
0a5459c4b518: Pull complete
b68f6850bf39: Pull complete
Digest: sha256:64d3a0e6fc899542d9171b0a94135ea7c4b51fbb25842ca782baf0de00f66535
Status: Downloaded newer image for sonarqube:7.9.1-community
docker.io/library/sonarqube:7.9.1-community
[root@md200 ~]#
[root@md200 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkinsci/blueocean latest c1fc8b2b664c 41 hours ago 563MB
postgres 10 1ba73c5b23e7 2 weeks ago 250MB
sonarqube 7.9.1-community ea9ce8f562b5 2 weeks ago 480MB
hello-world latest fce289e99eb9 11 months ago 1.84kB
[root@md200 ~]#

3.2 运行容器

启动postgres

docker run \
-d \
--name postgres10 \
-p 5432:5432 \
-e POSTGRES_USER=sonar \
-e POSTGRES_PASSWORD=123456 \
postgres:10

启动SonarQube

docker run \
-d \
--name sonarqube7.9 \
-p 9000:9000 \
--link postgres10 \
-e SONARQUBE_JDBC_URL=jdbc:postgresql://postgres10:5432/sonar \
-e SONARQUBE_JDBC_USERNAME=sonar \
-e SONARQUBE_JDBC_PASSWORD=123456 \
-v sonarqube_conf:/opt/sonarqube/conf \
-v sonarqube_extensions:/opt/sonarqube/extensions \
-v sonarqube_logs:/opt/sonarqube/logs \
-v sonarqube_data:/opt/sonarqube/data \
sonarqube:7.9.1-community

映射SonarQube存储(如果需要)

  -v sonarqube_conf:/opt/sonarqube/conf \
-v sonarqube_extensions:/opt/sonarqube/extensions \
-v sonarqube_logs:/opt/sonarqube/logs \
-v sonarqube_data:/opt/sonarqube/data \

实例

[root@md200 ~]# docker run \
> -d \
> --name postgres10 \
> -p 5432:5432 \
> -e POSTGRES_USER=sonar \
> -e POSTGRES_PASSWORD=123456 \
> postgres:10
32f698f11a3a814d01d554f92f10acac3f3735e91b51ed56ff9062a3528a4755
[root@md200 ~]#
[root@md200 ~]# docker run \
> -d \
> --name sonarqube7.9 \
> -p 9000:9000 \
> --link postgres10 \
> -e SONARQUBE_JDBC_URL=jdbc:postgresql://postgres10:5432/sonar \
> -e SONARQUBE_JDBC_USERNAME=sonar \
> -e SONARQUBE_JDBC_PASSWORD=123456 \
> -v sonarqube_conf:/opt/sonarqube/conf \
> -v sonarqube_extensions:/opt/sonarqube/extensions \
> -v sonarqube_logs:/opt/sonarqube/logs \
> -v sonarqube_data:/opt/sonarqube/data \
> sonarqube:7.9.1-community
85ade3d038eee52616e820917079f532351baba795b3cc7cbdfab72026625676
[root@md200 ~]#

4 - 检查状态

容器运行状态

[root@md200 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
85ade3d038ee sonarqube:7.9.1-community "./bin/run.sh" 5 seconds ago Up 4 seconds 0.0.0.0:9000->9000/tcp sonarqube7.9
32f698f11a3a postgres:10 "docker-entrypoint.s…" 10 minutes ago Up 10 minutes 0.0.0.0:5432->5432/tcp postgres10
a99b21fb6ce8 jenkinsci/blueocean "/sbin/tini -- /usr/…" 20 minutes ago Up 20 minutes 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp myjenkins
[root@md200 ~]#

防火墙

[root@md200 ~]# firewall-cmd --zone=public --permanent --add-port=9000/tcp
success
[root@md200 ~]# firewall-cmd --zone=public --permanent --add-port=5432/tcp
success
[root@md200 ~]#
[root@md200 ~]# firewall-cmd --reload
success
[root@md200 ~]#

浏览器访问 http://192.168.16.200:9000 

初始使用 admin/admin 登录

查看数据库信息

5 - 设置中文界面

根据提示重启Sonar Server

中文界面

6 - 参考信息

SonarQube - 以Docker方式启动SonarQube的更多相关文章

  1. Docker方式安装SonarQube

    获取镜像 docker pull postgres: docker pull sonarqube:-community 启动镜像 docker run -d -p : -e POSTGRES_PASS ...

  2. Docker 方式运行 sonarqube

    From 平台测试部同事的 ppt 感谢. 拉取镜像 docker pull postgres docker pull sonarqube 运行镜像 docker run --name db --re ...

  3. nginx docker 方式启动后日志切分的正确姿势

    Linux系统的日志文件的切分主要是由logrotate来完成的,以centos7为例配置通常在/etc/logrotate.d 目录下 添加 nginx 文件 cat nginx /var/log/ ...

  4. kali-rolling安装使用sonarqube教程(docker方式)

    一.说明 最近要找一款代码审计工具,Fortify SCA太贵,VisualCodeGrepper不太好用.在freebuf上看到可用sonarqube来建代码自动化扫描系统所以也来试一试. 直接安装 ...

  5. docker + mysql安装sonarqube

    docker sonarqube地址:https://hub.docker.com/_/sonarqube docker mysql地址:https://hub.docker.com/_/mysql ...

  6. docker使用redis.conf配置文件方式启动redis无反应无日志

    如题,场景重现:因为配置多了,不想通过参数来启动docker容器中的redis,特意上github找了对应版本的redis.conf,修改了相关配置,只让本机使用: 上传到/mydata/redis/ ...

  7. docker安装redis并以配置文件方式启动

    镜像相关 redis镜像 # 不限定版本 docker pull redis # 拉取 redis为4.0.9版本的镜像 docker pull redis:4.0.9 # 拉取之后查看镜像 dock ...

  8. 利用docker compose启动gitlab及runner

    添加docker compose配置文件 新建文件docker-compose.yml,输入如下内容: gitlab: image: 'gitlab/gitlab-ce:latest' contain ...

  9. 使用内网的Docker Image启动AcmeAir应用

    1.修改docker启动选项,添加信赖私有仓库 为了拉取docker.oneapm.me仓库里的镜像,我们需要将它添加为信赖仓库,方式是在启动选项中添加 --insecure-registry doc ...

随机推荐

  1. Java基础教程——解析注解

    解析注解 Java 5开始,java.lang.reflect包下的反射API可以在运行时读取Annotation. 应用:定义一个自动执行方法的注解,解析注解.通过反射执行方法,替代配置文件. pa ...

  2. 为什么不用UUID做主键?

    不易于存储:UUID太长,16字节128位,通常以36长度的字符串表示,很多场景不适用. 信息不安全:基于MAC地址生成UUID的算法可能会造成MAC地址泄露,这个漏洞曾被用于寻找梅丽莎病毒的制作者位 ...

  3. 移动端和web端的性能指标

    移动端的性能指标: 1.内存:80% 2.CPU 3.流量 4.电量 5.启动速度 6.滑动速度.界面切换速度 7.与服务器交互的网络速度 web端的性能指标: 1.CPU 2.内存 3.网络 4.I ...

  4. Visual Studio 连接 SQL Server 关键代码

    首先先把Visual Studio 上面工具打开-->连接数据库-->选择Microsoft SQL Server进入(有两种验证方式:1.windows验证方式[就是本机验证]:2.SQ ...

  5. rest-framework 分页器

    一 简单分页(查看第n页,每页显示n条) from rest_framework.pagination import PageNumberPagination # 一 基本使用:url=url=htt ...

  6. C#Excel导出注意事项

    Excel 导出 1.首先在服务器中安装office ,并且要注册2.在组件服务中 设置Microsoft.excel.appliction 属性中设置自定义加network service用户并交互 ...

  7. 课堂笔记【java JDBC】

    目录 JDBC简介 工作原理: 工作过程: JDBC驱动与连接 JDBC驱动 连接JDBC驱动 1.下载特定数据库的JDBCjar包 2.加载并注册数据库驱动 3.连接驱动 JDBC常见API JDB ...

  8. python zip()函数用法

    zip() --内建函数 zip([iterable, ...]) 它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表) ...

  9. MySQL事务(一)认识事务

    简单来说,事务就是要保证一组数据库操作,要么全部完成,要么全部失败. 为什么要有事务 数据库中的数据是共享资源,因此数据库系统通常要支持多个用户的或不同应用程序的访问,会出现并发存取数据的现象. 数据 ...

  10. 洛谷P2423 [HEOI2012]朋友圈

    题目大意: 有\(A,B\)两个点集,每个点有点权,在\(A\)集合中,两个点之间有边满足\(a_i\ xor\ a_j\ mod\ 2 = 1\),在\(B\)集合中,两个点之间有边满足\(b_i\ ...