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. C语言讲义——字符串库函数

    字符串库函数<string.h> 求字符串长度(不含结束符'\0'****) strlen(str) 字符串赋值(可能造成数组越界) strcpy(str," 水浒传 " ...

  2. Java基础教程——线程池

    启动新线程,需要和操作系统进行交互,成本比较高. 使用线程池可以提高性能-- 线程池会提前创建大量的空闲线程,随时待命执行线程任务.在执行完了一个任务之后,线程会回到空闲状态,等待执行下一个任务.(这 ...

  3. Ajax原理与图解

    Ajax原理 Ajax 的全称是Asynchronous JavaScript and XML. Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后 ...

  4. C++重复结构题解

    买房子 总时间限制:  1000ms 内存限制:  65536kB 描述 某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每年百分之K增长,并且该 ...

  5. 在EXCEL带有字母的数字下拉如何能自动排序

    在excel中0,1,2,3,4,5,6,7,8,9会自动排序,a,b,c,d,e,f,g.....会自动排序,所以可以分布来实现. 例如排序:fish1a.png,fish1b.png,fish1c ...

  6. LeetCode 025 Reverse Nodes in k-Group

    题目描述:Reverse Nodes in k-Group Given a linked list, reverse the nodes of a linked list k at a time an ...

  7. 单体->集群->模块化->分布式微服务

    开头语: 每篇一段开头语,在技术的道路中寻找文采的乐趣.(如果随笔中都是大白话勿喷,兄弟姐妹们) 单体项目 单体项目适用于小型开发,或自己来进行小项目的测试和使用. 单体项目的缺憾 多人开发项目所出现 ...

  8. 第8.7节 Python类__new__方法和构造方法关系深入剖析:__new__方法执行结果对__init__的影响案例详解

    一. 引言 前面章节介绍了类中的构造方法和__new__方法,并分析了二者执行的先后顺序关系.__new__方法在__init__方法前执行,__new__方法执行后才返回实例对象,也就是说__new ...

  9. PyQt(Python+Qt)学习随笔:自定义信号在emit发射信号时报错:AttributeError: object has no attribute

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 如果使用自定义信号,一定要记得信号是类变量,必须在类中定义,不能在实例 ...

  10. PyQt开发案例:结合QDial实现的QStackedWidget堆叠窗口程序例子及完整代码

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.案例说明 本案例是老猿在学习QStackedWidget中的一个测试案例,该案例使用QStack ...