拉取数据库
docker pull postgres
启动postgres数据库创建sonar用户
docker run --name db -p 5432:5432 -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres
注意这里的账号和密码,以及postgres用的容器内部和linux的端口都是5432。
拉取sonarqube
docker pull sonarqube
创建数据库
进入容器命令
docker exec -it db /bin/bash
进入postgres命令行
psql -U sonar
create database sonar;创建sonar数据库
alter role sonar createdb;alter role sonar superuser;alter role sonar createrole;给sonar授权
alter database sonar owner to sonar;更改sonar数据库拥有者(这一步是必须的,否则会sonarqube会连接失败)
/p 退出postgres命令行
exit 退出docker进入linux命令行
启动sonarqube
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
注意连接里数据库账号和密码要写对。![](https://img-blog.csdnimg.cn/465f6254e4d645adaa9cbb77a02aa3cd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic5pa55LiN6LSl5bCx5piv5oiR,size_20,color_FFFFFF,t_70,g_se,x_16)
启动后会返回docker进程ID。
可使用docker ps命令查看当前docker运行的容器。
![](https://img-blog.csdnimg.cn/2b7f2b2fe8cf42eaa7ff5e46b8707eff.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic5pa55LiN6LSl5bCx5piv5oiR,size_20,color_FFFFFF,t_70,g_se,x_16)
可以看到sonarqube和postgres都在运行。
可以使用linux命令查看接口监听是否正常。
![](https://img-blog.csdnimg.cn/51a6d836f534450daf08e0275c7fee0d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic5pa55LiN6LSl5bCx5piv5oiR,size_16,color_FFFFFF,t_70,g_se,x_16)
访问sonar
启动成功后登录ip:9000端口就可以访问了 默认账号密码:admin
![](https://img-blog.csdnimg.cn/28b4c12643084fd5ae5c1119578fb479.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic5pa55LiN6LSl5bCx5piv5oiR,size_20,color_FFFFFF,t_70,g_se,x_16)
查看日志命令
如果访问失败,或者用curl命令,提示Connection refused,,
可以查看sonar日志,定位报错,并进行修改。
docker logs -f -t --tail==100 容器ID
![](https://img-blog.csdnimg.cn/fdb4f49bc7eb4e21a923d49d147f3dad.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic5pa55LiN6LSl5bCx5piv5oiR,size_20,color_FFFFFF,t_70,g_se,x_16)
sonar平台忘记密码重置
进入容器
进入postgres命令行
postgres=# \c sonar
sonar=# update users set crypted_password = '$2a$12$uCkkXmhW5ThVK8mpBvnXOOJRLd64LJeHTeCkSuB3lfaR2N0AYBaSi',salt=null, hash_method='BCRYPT' where login = 'admin';
执行成功后,用admin/admin可登陆成功
![](https://img-blog.csdnimg.cn/dccd1929cefc49548d787adc5a688097.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic5pa55LiN6LSl5bCx5piv5oiR,size_20,color_FFFFFF,t_70,g_se,x_16)