docker 搭建 sonarqube

也没有去看官方文档,直接百度搜了写教程,直接干的。看到有 mysql和postgres两种数据库,我想直接用mysql把~毕竟熟悉点。最后终于踩坑了~sonqube7.9之后的版本不在支持mysql,我使用docker pull镜像的时候,基本都是latest状态,所以这个坑,是一定要带了。我把docker安装MySQL的操作,记录在最后,一方面如果需要建mysql可以有所借鉴,如果要用sonqube7.9之前,也能有所参看。


1.postgresql 运行,建库,授权

[root@localhost software]# docker run --name db -p 5432:5432 -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres
0860f8dee67445edfef33ebd2a79b8c8099e4ce2c1921e0e16289691c71f17a9
[root@localhost software]# docker exec -it db /bin/bash              (进入db容器)
root@0860f8dee674:/# psql -U sonar               (进入数据库)
psql (12.3 (Debian 12.3-1.pgdg100+1))
Type "help" for help.

sonar=# create database sonar;                          (建表)
ERROR:  database "sonar" already exists(不知道数据库存在是不是因为之前MySQL建的)
sonar=# alter role sonar createdb;alter role sonar superuser;alter role sonar createrole;       (给sonar授权)
ALTER ROLE
ALTER ROLE
ALTER ROLE
sonar=# alter database sonar owner to sonar;            (sonar 数据库owner)
ALTER DATABASE
sonar=# exit                                (退出数据库)
root@0860f8dee674:/# exit                 (退出容器)
exit

2.运行sonarqube  ==》运行等,报错处理

[root@localhost ~]# docker run --name sq -e sonar.jdbc.password=sonar -e sonar.jdbc.username=sonar -e sonar.jdbc.url=jdbc:postgresql://postgres/sonar --link db: postgres -p 9000:9000 -d sonarqube
196b0fcea1c288c617f685afdf83c37d99febb94bb8b6a45c9fad67baf2c6955
[root@localhost ~]# docker ps -a        (查看新建容器状态,看到了exited)
CONTAINER ID        IMAGE                                         COMMAND                  CREATED             STATUS                      PORTS                      NAMES
196b0fcea1c2        sonarqube                                     "bin/run.sh bin/sona…"   56 seconds ago      Exited (0) 41 seconds ago                              sq
0860f8dee674        postgres                                      "docker-entrypoint.s…"   5 minutes ago       Up 5 minutes                0.0.0.0:5432->5432/tcp     db
42bbe8a61a72        registry.cn-hangzhou.aliyuncs.com/anoy/yapi   "node server/app.js"     4 days ago          Up 23 hours                 0.0.0.0:3000->3000/tcp     yapi
e3bbf9397ed5        mongo                                         "docker-entrypoint.s…"   4 days ago          Up 23 hours                 0.0.0.0:27017->27017/tcp   docker_mongodb
[root@localhost ~]# docker logs 19                (查看容器的日志)
2020.06.23 15:03:29 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube/temp
2020.06.23 15:03:29 INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
2020.06.23 15:03:29 INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/opt/sonarqube/elasticsearch]: /opt/sonarqube/elasticsearch/bin/elasticsearch
2020.06.23 15:03:29 INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
2020.06.23 15:03:30 INFO  app[][o.e.p.PluginsService] no modules loaded
2020.06.23 15:03:30 INFO  app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
2020.06.23 15:03:34 INFO  es[][o.e.e.NodeEnvironment] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [39.5gb], net total_space [43.7gb], types [rootfs]
2020.06.23 15:03:34 INFO  es[][o.e.e.NodeEnvironment] heap size [495.3mb], compressed ordinary object pointers [true]
2020.06.23 15:03:34 INFO  es[][o.e.n.Node] node name [sonarqube], node ID [h_Mcs4vaQcmxI8t9ctC2Mg]
2020.06.23 15:03:34 INFO  es[][o.e.n.Node] version[6.8.4], pid[36], build[default/tar/bca0c8d/2019-10-16T06:19:49.319352Z], OS[Linux/3.10.0-514.el7.x86_64/amd64], JVM[AdoptOpenJDK/OpenJDK 64-Bit Server VM/11.0.6/11.0.6+10]
2020.06.23 15:03:34 INFO  es[][o.e.n.Node] JVM arguments [-XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=/opt/sonarqube/temp, -XX:ErrorFile=../logs/es_hs_err_pid%p.log, -Des.enforce.bootstrap.checks=true, -Xmx512m, -Xms512m, -XX:+HeapDumpOnOutOfMemoryError, -Des.path.home=/opt/sonarqube/elasticsearch, -Des.path.conf=/opt/sonarqube/temp/conf/es, -Des.distribution.flavor=default, -Des.distribution.type=tar]
2020.06.23 15:03:35 INFO  es[][o.e.p.PluginsService] loaded module [analysis-common]
2020.06.23 15:03:35 INFO  es[][o.e.p.PluginsService] loaded module [lang-painless]
2020.06.23 15:03:35 INFO  es[][o.e.p.PluginsService] loaded module [mapper-extras]
2020.06.23 15:03:35 INFO  es[][o.e.p.PluginsService] loaded module [parent-join]
2020.06.23 15:03:35 INFO  es[][o.e.p.PluginsService] loaded module [percolator]
2020.06.23 15:03:35 INFO  es[][o.e.p.PluginsService] loaded module [reindex]
2020.06.23 15:03:35 INFO  es[][o.e.p.PluginsService] loaded module [repository-url]
2020.06.23 15:03:35 INFO  es[][o.e.p.PluginsService] loaded module [transport-netty4]
2020.06.23 15:03:35 INFO  es[][o.e.p.PluginsService] no plugins loaded
2020.06.23 15:03:38 WARN  es[][o.e.d.c.s.Settings] [http.enabled] setting was deprecated in Elasticsearch and will be removed in a future release! See the breaking changes documentation for the next major version.
2020.06.23 15:03:39 INFO  es[][o.e.d.DiscoveryModule] using discovery type [zen] and host providers [settings]
2020.06.23 15:03:40 INFO  es[][o.e.n.Node] initialized
2020.06.23 15:03:40 INFO  es[][o.e.n.Node] starting ...
2020.06.23 15:03:41 INFO  es[][o.e.t.TransportService] publish_address {127.0.0.1:9001}, bound_addresses {127.0.0.1:9001}
2020.06.23 15:03:41 INFO  es[][o.e.b.BootstrapChecks] explicitly enforcing bootstrap checks
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
2020.06.23 15:03:42 INFO  es[][o.e.n.Node] stopping ...
2020.06.23 15:03:42 INFO  es[][o.e.n.Node] stopped
2020.06.23 15:03:42 INFO  es[][o.e.n.Node] closing ...
2020.06.23 15:03:42 INFO  es[][o.e.n.Node] closed
2020.06.23 15:03:42 WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [es]: 78
2020.06.23 15:03:42 INFO  app[][o.s.a.SchedulerImpl] Process[es] is stopped
2020.06.23 15:03:42 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped

报错语句:[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]百度一下,修改文件
 

[root@localhost ~]# vi /etc/sysctl.conf  ====》 修改本地文件的内存大小值(添加,vm.max_map_count = 655360)
[root@localhost ~]# sysctl -p
vm.max_map_count = 655360
[root@localhost ~]# docker ps -a                          (先查看镜像状态,exited)
CONTAINER ID        IMAGE                                         COMMAND                  CREATED             STATUS                     PORTS                      NAMES
196b0fcea1c2        sonarqube                                     "bin/run.sh bin/sona…"   6 minutes ago       Exited (0) 6 minutes ago                              sq
0860f8dee674        postgres                                      "docker-entrypoint.s…"   11 minutes ago      Up 11 minutes              0.0.0.0:5432->5432/tcp     db
42bbe8a61a72        registry.cn-hangzhou.aliyuncs.com/anoy/yapi   "node server/app.js"     4 days ago          Up 23 hours                0.0.0.0:3000->3000/tcp     yapi
e3bbf9397ed5        mongo                                         "docker-entrypoint.s…"   4 days ago          Up 23 hours                0.0.0.0:27017->27017/tcp   docker_mongodb
[root@localhost ~]# docker start 19                       (运行容器)
19
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                                         COMMAND                  CREATED             STATUS                     PORTS                      NAMES
196b0fcea1c2        sonarqube                                     "bin/run.sh bin/sona…"   6 minutes ago       Up 3 seconds               0.0.0.0:9000->9000/tcp     sq
0860f8dee674        postgres                                      "docker-entrypoint.s…"   11 minutes ago      Up 11 minutes              0.0.0.0:5432->5432/tcp     db
42bbe8a61a72        registry.cn-hangzhou.aliyuncs.com/anoy/yapi   "node server/app.js"     4 days ago          Up 23 hours                0.0.0.0:3000->3000/tcp     yapi
e3bbf9397ed5        mongo                                         "docker-entrypoint.s…"   4 days ago          Up 23 hours                0.0.0.0:27017->27017/tcp   docker_mongodb
[root@localhost ~]# docker ps -a                              (查看容器运行情况)
CONTAINER ID        IMAGE                                         COMMAND                  CREATED             STATUS              PORTS                      NAMES
196b0fcea1c2        sonarqube                                     "bin/run.sh bin/sona…"   7 minutes ago       Up 19 seconds       0.0.0.0:9000->9000/tcp     sq
0860f8dee674        postgres                                      "docker-entrypoint.s…"   11 minutes ago      Up 11 minutes       0.0.0.0:5432->5432/tcp     db
42bbe8a61a72        registry.cn-hangzhou.aliyuncs.com/anoy/yapi   "node server/app.js"     4 days ago          Up 23 hours         0.0.0.0:3000->3000/tcp     yapi
e3bbf9397ed5        mongo                                         "docker-entrypoint.s…"   4 days ago          Up 23 hours         0.0.0.0:27017->27017/tcp   docker_mongodb


看到sonarqube和postgres都运行起来了,直接访问本地的9000端口,如图:

 

 

==============================MySQL 踩坑=============================

1.拉取镜像
docker pull mysql
2.新建文件夹,为下一步挂载做准备
mkdir -p ~/software/mysql/data(如果不创建也会自动创建)
3.启动MySQL
docker run \
    -d \
    -p 3306:3306 \
    --name mysql_sonar \
    -v ~/software/mysql/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql:latest

参数说明:
-d 后台运行
-p 将后面的容器端口映射到前面的本机端口(前面是本机:宿主机,后面是容器)
-name 生成的容器的名字
-v 将容器中的文件挂载到本地(前面是本机:宿主机,后面是容器)

启动mysql,遇到一个问题:
docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql_sonar (96357f403e596b41646897b7c65dd5e776e2d6599f1f3a5a515d7c0ff6d536fa):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-destination 172.17.0.4:3306 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)).
解决方案:重启docker
systemctl restart docker
docker start mysql_sonar

4. 进入MySQL容器
docker exec -it mysql bash
    4.1.登录 MySQL
    mysql -u root -p
    输入密码:123456
    4.2.创建 Sonar 数据库
    create database sonar;
    4.3.添加远程登录用户:sonar ,并授予权限
    CREATE USER 'sonar'@'%' IDENTIFIED WITH mysql_native_password BY 'sonar';
    GRANT ALL PRIVILEGES ON *.* TO 'sonar'@'%';
    4.4.退出MySQL
    exit
5. 退出MySQL容器
exit


Sonar
1.拉去sonarqube镜像

1.新建sonarqube文件夹
 mkdir ~/software/sonarqube
2.启动sonarqube
docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 --link=mysql_sonar:mysql_sonar -v ~/software/sonarqube/logs:/opt/sonarqube/logs -v ~/software/sonarqube/conf:/opt/sonarqube/conf -v ~/software/sonarqube/data:/opt/sonarqube/data -v ~/software/sonarqube/extensions:/opt/sonarqube/extensions -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -e SONARQUBE_JDBC_URL="jdbc:mysql://192.168.0.189:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" sonarqube:latest

3.通过docker logs containerID 查看log
第二步报错:Configuration file not found: /opt/sonarqube/conf/sonar.properties

4.去掉挂载试一下
docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 --link=mysql_sonar:mysql_sonar -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -e SONARQUBE_JDBC_URL="jdbc:mysql://192.168.0.189:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" sonarqube:latest


报错:
Exception in thread "main" org.sonar.process.MessageException: Unsupported JDBC driver provider: mysql_sonar

原来2019年4月10号,SonarQube发文称在7.9之后,所有的SonarQube的版本(CE、DE、EE和DCE)中将停止对MySQL的支持

原本想是因为MySQL自己熟悉点,就用MySQL。功课没有备足。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值