docker部署sonarqube

1.设置vm.max_map_count

# 方法一
# 重启可能会失效
sysctl -w vm.max_map_count=262144
 
# 方法二
# /etc/sysctl.conf 文件最后添加一行 vm.max_map_count=262144
# 重启不会失效

cat >> /etc/sysctl.conf << EOF
vm.max_map_count=262144
EOF

note: 不做修改可能会遇到报错

ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
ERROR: Elasticsearch did not exit normally - check the logs at /opt/sonarqube/logs/sonarqube.log

2. 准备docker-componse.yml文件


version: "3"
 
services:
  sonarqube:
    image: sonarqube:lts-community
    depends_on:
      - pgdb
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://pgdb:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
    volumes:
      - /data/docker/sonarqube/sonarqube_data:/opt/sonarqube/data
      - /data/docker/sonarqube/sonarqube_extensions:/opt/sonarqube/extensions
      - /data/docker/sonarqube/sonarqube_logs:/opt/sonarqube/logs
    ports:
      - "9000:9000"
  pgdb:
    image: postgres:12
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
    volumes:
      - /data/docker/sonarqube/postgresql:/var/lib/postgresql
      - /data/docker/sonarqube/postgresql_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"

3. 启动容器

准备挂载目录

mkdir -p /data/docker/sonarqube/sonarqube_data \
	/data/docker/sonarqube/sonarqube_extensions \
	/data/docker/sonarqube/sonarqube_logs \
	/data/docker/sonarqube/postgresql \
	/data/docker/sonarqube/postgresql_data

chmod 777 -R /data/docker/sonarqube/
docker-compose -f docker-componse.yml up -d

4. 查看容器状态

docker ps

5. 登录sonarqube

docker部署后
http://IP:9000/

默认用户: admin

默认密码:admin

### 使用Docker部署SonarQube #### 准备工作 为了确保顺利部署SonarQube,需确认已安装Docker。如果尚未安装,请前往[Docker官网](https://www.docker.com/)下载适合操作系统的版本并完成安装过程[^3]。 #### 调整系统参数 对于某些操作系统(如CentOS),可能需要调整内核参数来满足Elasticsearch的要求,因为默认情况下这些设置不足以支持生产模式下的正常运作。具体来说: - 设置最大内存映射数 `sysctl -w vm.max_map_count=524288` - 增加文件句柄的最大数量 `sysctl -w fs.file-max=131072` 和每进程打开文件的数量限制 `ulimit -n 131072` - 提升用户进程数目上限 `ulimit -u 8192` 以上命令可以在终端中逐条输入执行,或者编辑相应的配置文件使更改永久生效[^5]。 #### 获取SonarQube镜像 利用Docker Hub上的官方仓库获取最新的SonarQube镜像: ```bash docker pull sonarqube:latest ``` 这一步会从互联网下载最新版的SonarQube镜像至本地机器上,供后续创建容器时使用[^1]。 #### 启动SonarQube容器 一旦获得了所需的镜像,就可以通过下面这条指令启动一个新的SonarQube实例: ```bash docker run -d --name sonarqube -p 9000:9000 sonarqube:latest ``` 这里定义了一个名为sonarqube的服务,并将其内部监听端口9000映射到了主机相同的端口号上,使得外部可以直接访问该应用界面。 #### 进阶配置——持久化存储与网络优化 考虑到数据安全性和性能因素,在实际环境中通常建议采用挂载卷的方式保存数据库和其他重要资料;另外也可以考虑构建自定义网络以增强不同服务间的通信效率。例如: ```bash docker volume create sonarqube_data docker network create sonarnet docker run -d \ --name sonarqube \ -v sonarqube_data:/opt/sonarqube/data \ --network sonarnet \ -p 9000:9000 \ sonarqube:latest ``` 此脚本不仅实现了上述提到的功能改进,还进一步增强了整体解决方案的灵活性和可靠性[^2]。 #### 自动化集成示例 当希望将SonarQube融入CI/CD流水线时,比如结合Jenkins来进行持续集成,则可以通过编写shell脚本来简化这一过程。以下是一个简单的例子,展示了如何调用SonarScanner插件对项目源码实施静态分析并将结果上传给远程服务器中的SonarQube实例[^4]: ```groovy pipeline { agent any stages { stage('Build') { ... } stage('Test') { ... } stage('Analyze with SonarQube'){ steps{ sh ''' mvn clean verify sonar:sonar \ -Dsonar.host.url=http://${SONAR_HOST} \ -Dsonar.login=${SONAR_TOKEN} ''' } } } post{...} } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值