一:下载镜像
docker pull postgres:13
docker pull sonarqube:lts
二:编写docker-compose.yml启动脚本
# 指定 Docker Compose 文件格式版本
version: "3.8"
# 定义服务列表
services:
# SonarQube 服务配置
sonarqube:
# 使用 SonarQube 长期支持版本镜像
image: sonarqube:lts
# 指定容器名称
container_name: sonarqube
# 声明依赖关系,确保数据库服务先启动
depends_on:
- sonarqube-db
# 环境变量配置
environment:
# PostgreSQL 数据库连接 URL
- SONAR_JDBC_URL=jdbc:postgresql://sonarqube-db:5432/sonar
# 数据库用户名
- SONAR_JDBC_USERNAME=sonar
# 数据库密码
- SONAR_JDBC_PASSWORD=sonar
# 禁用 Elasticsearch 启动时的引导检查
- SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true
# 数据卷映射
volumes:
# 持久化 SonarQube 数据目录
- ./sonarqube/data:/opt/sonarqube/data
# 持久化 SonarQube 插件目录
- ./sonarqube/extensions:/opt/sonarqube/extensions
# 持久化 SonarQube 日志目录
- ./sonarqube/logs:/opt/sonarqube/logs
# 端口映射,将容器的 9000 端口映射到主机的 9000 端口
ports:
- "9000:9000"
# 将服务加入自定义网络
networks:
- sonarnet
# 容器重启策略:除非手动停止,否则总是重启
restart: unless-stopped
# PostgreSQL 数据库服务配置
sonarqube-db:
# 使用 PostgreSQL 13 版本镜像
image: postgres:13
# 指定容器名称
container_name: sonarqube-db
# 环境变量配置
environment:
# PostgreSQL 用户名
- POSTGRES_USER=sonar
# PostgreSQL 密码
- POSTGRES_PASSWORD=sonar
# PostgreSQL 数据库名
- POSTGRES_DB=sonar
# 数据卷映射,持久化数据库数据
volumes:
- sonarqube_db:/var/lib/postgresql/data
# 将服务加入自定义网络
networks:
- sonarnet
# 容器重启策略:除非手动停止,否则总是重启
restart: unless-stopped
# 网络配置
networks:
# 定义名为 sonarnet 的网络
sonarnet:
# 使用 bridge 驱动,创建桥接网络
driver: bridge
# 数据卷配置
volumes:
# SonarQube 数据卷
sonarqube_data:
# SonarQube 插件数据卷
sonarqube_extensions:
# SonarQube 日志数据卷
sonarqube_logs:
# PostgreSQL 数据库数据卷
sonarqube_db:
三:启动
docker-compose up -d
四: 赋权限
chmod -R 777 ./sonarqube
五:重启
docker-compose down -v && docker-compose up -d
六:进入页面 localhost:9000
用户名admin密码admin
七:下载中文插件
八:使用
mvn -X sonar:sonar -Dsonar.host.url=http://xxxxx:9000 -Dsonar.projectKey=java -Dsonar.login=squ_9e45863dac698a0139fc9fd127dfd17b10b1ffe0
X:是打印详细日志,第一次执行的时候带上方便看日志,没有问题在删掉就ok了
Dsonar.host.url:sonar服务器地址
Dsonar.projectKey: 项目唯一标志,不同项目用不同的key
Dsonar.login:token值,登录验证用的