参考资料:https://blog.csdn.net/naumy/article/details/120677544

https://www.cnblogs.com/shenh/p/13428029.html

1.拉取镜像

一、拉取相关镜像并运行数据库

1.1.1拉取相关镜像

# 拉取sonarqube镜像
$ docker pull sonarqube:9.1.0-community (推荐使用) /  $ docker pull sonarqube:7.6-community
# 拉取postgres镜像
$ docker pull postgres:9.6.23

1.1.2运行镜像

# 运行postgres数据库
$ docker run --name postgresqldb --restart=always -p 5432:5432 \
-e POSTGRES_USER=root \
-e POSTGRES_PASSWORD=123456  \
-d postgres:9.6.23

# 进入postgres容器,创建用户名和密码
$ docker exec -it postgresqldb bash

# 登录数据库
psql -U root -W
# 创建用户名和密码
create user sonar with password 'sonar';
create database sonar owner sonar;
grant all privileges on database sonar to sonar;

二、安装 sonarQube

#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:9.1.0-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/

启动 sonarQube

方法一

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:9.1.0-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

注意此处的url链接:sonar.jdbc.url=jdbc:postgresql://ip: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:9.1.0-community

遇到的问题

  • 1、数据库账号密码设置错,导致链接数据库一直失败
  • 2、数据url错误,使用docker不能用localhost,而要用真是的ip地址。