Docker搭建Sonarqube平台
搭建postgresql
-
拉取镜像
命令docker pull postgres:latest
-
创建工作目录,为接下来的挂载自定义映射路径做准备
mkdir -p /data/sonarqube_workspace/postgres/postgresql mkdir -p /data/sonarqube_workspace/postgres/data
-
创建网络
docker network create sonarqube
-
创建容器并运行
docker run -d \ --name postgres \ --net sonarqube \ -p 5432:5432 \ -v /data/sonarqube_workspace/postgres/postgresql:/var/lib/postgresql \ -v /data/sonarqube_workspace/postgres/data:/var/lib/postgresql/data \ -v /etc/localtime:/etc/localtime:ro \ -e POSTGRES_USER=sonar \ -e POSTGRES_PASSWORD=sonar \ -e POSTGRES_DB=sonar \ -e TZ=Asia/Shanghai \ --restart always \ --privileged=true \ --network-alias postgres \ postgres:latest
-
部署命令解释
- -p 5432:5432:将容器 5432 映射到宿主机端口 5432
- -v /data/sonarqube_workspace/postgres/postgresql:/var/lib/postgresql:将容器下的 /var/lib/postgresql 挂载到宿主机 /data/sonarqube_workspace/postgres/postgresql
- -v /etc/localtime:/etc/localtime:ro:设置容器与宿主机时间一致
- –e POSTGRES_USER=sonarqube:设置数据库用户名
- -e POSTGRES_PASSWORD=sonarqube:设置数据库密码
- -e POSTGRES_DB=sonarqube:新建db
- -e TZ=Asia/Shanghai:设置时区
- –restart always:容器退出时总是重启
- –privileged=true:挂载主机目录Docker访问出现Permission denied的解决办法
- –net sonarqube:容器接入自定义网络
- –network-alias postgres:给容器起个网络别名
搭建sonarqube
-
拉取镜像,这里拉取的是tag为7.4-community(7.6及以上对的版本与jenkins的sonar-qube插件展示不兼容,以后官方会解决兼容问题)
docker pull sonarqube:7.4-community
-
创建工作目录
mkdir -p /data/sonarqube_workspace/sonarqube
-
修改系统参数
echo "vm.max_map_count=262144" > /etc/sysctl.conf sysctl -p
-
通过临时容器准备相关文件目录
运行一个test容器docker run -d --name sonartest sonarqube:7.4-community
将容器内重要文件复制到宿主机
docker cp sonartest:/opt/sonarqube/conf /data/sonarqube_workspace/sonarqube docker cp sonartest:/opt/sonarqube/data /data/sonarqube_workspace/sonarqube docker cp sonartest:/opt/sonarqube/logs /data/sonarqube_workspace/sonarqube docker cp sonartest:/opt/sonarqube/extensions /data/sonarqube_workspace/sonarqube
删除此test容器
docker kill sonartest docker rm sonartest
修改文件夹权限
chmod -R 777 /data/sonarqube_workspace/sonarqube/
-
创建容器并运行
这里分为两步,首先在配置文件中去设置username, password, 和jdbc的urla. 找到 /data/sonarqube_workspace/sonarqube/conf/ 路径下的文件 sonar.properties
找到如下配置去掉注释。并赋值 username,password,注意这里的username和password要和创建postgresql时候的一致sonar.jdbc.username=sonar sonar.jdbc.password=sonar
b.修改sonar.jdbc.url
去掉 sonar.jdbc.url 注释,配置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
c.执行命令去创建容器
docker run -d --name sonarqube -p 9000:9000 \ --net sonarqube \ --privileged=true \ --restart always \ -v /data/sonarqube_workspace/sonarqube/logs:/opt/sonarqube/logs \ -v /data/sonarqube_workspace/sonarqube/conf:/opt/sonarqube/conf \ -v /data/sonarqube_workspace/sonarqube/data:/opt/sonarqube/data \ -v /data/sonarqube_workspace/sonarqube/extensions:/opt/sonarqube/extensions\ sonarqube:7.4-community
备注: 之前尝试过直接使用传入参数的username和password和jdbc.url的方式去创建容器,但是遇到了问题,所以使用上面这种方式去创建容器
参考博客地址: https://www.cnblogs.com/shenh/p/13428029.html
致谢: 说参考博客的博主写的非常好,给了我非常大指导,赞一个,最主要是还提供了一个稳定可用的版本的版本号