使用Docker Compose在线安装SonarQube

文章目录

  • 使用Docker Compose在线安装SonarQube
    • docker-compose.yml
    • 安装SonarQube
    • Troubleshooting
    • 参考文档

使用Docker Compose在线安装SonarQube

docker-compose.yml

version: "2"

services:
  sonarqube:
    image: sonarqube:6.7.1
    restart: always
    ports:
      - "9000:9000"
    depends_on:
      - db
    networks:
      - sonarnet
    environment:
      - sonar.jdbc.username=sonar
      - sonar.jdbc.password=sonar123
      - sonar.jdbc.url=jdbc:postgresql://db:5432/sonarqube
      - SONARQUBE_JDBC_USERNAME=sonar
      - SONARQUBE_JDBC_PASSWORD=sonar123
      - SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonarqube
    volumes:
      - /srv/docker/sonarqube/sonarqube_conf:/opt/sonarqube/conf
      - /srv/docker/sonarqube/sonarqube_data:/opt/sonarqube/data
      - /srv/docker/sonarqube/sonarqube_extensions:/opt/sonarqube/extensions

  db:
    image: postgres:9.6
    restart: always
    networks:
      - sonarnet
    environment:
      - POSTGRES_USER=sonar
      - POSTGRES_PASSWORD=sonar123
      - POSTGRES_DB=sonarqube
    volumes:
      - /srv/docker/sonarqube/postgresql:/var/lib/postgresql
      - /srv/docker/sonarqube/postgresql_data:/var/lib/postgresql/data

networks:
  sonarnet:
    driver: bridge

说明:

  • db中需要明确定义Postgres数据库的用户名、密码和数据库名
  • sonarqube中的数据库的用户名、密码和数据库名要和db中的定义保持一致
  • 由于sonarqube镜像有bug,需要同时用sonar.jdbc.xxxSONARQUBE_JDBC_XXX指定数据库的用户名、密码和数据库名(否则会出现仍然使用默认的H2数据库的问题,或者打开SonarQube后发现Rules和Quality Profile为空的问题)

另外,sonarqubepostgres镜像也有版本兼容问题,经测试的兼容版本包括:

  • sonarqube:6.7.1 and postgres:9.6
  • sonarqube:6.4 and postgres:9.4
  • sonarqube:7.0 and postgres:9.6

详细的docker-compose.yml和一键安装脚本参见:

  • https://github.com/cookcodeblog/OneDayDevOps/tree/master/components/sonarqube

安装SonarQube

mkdir -p /opt/sonarqube
cd /opt/sonarqube
wget https://raw.githubusercontent.com/cookcodeblog/OneDayDevOps/master/components/sonarqube/docker-compose.yml

docker-compose up -d

打开http://sonarqube_ip:9000访问SonarQube,缺省用户名密码是admin/admin

Troubleshooting

Q: SonarQube运行一会后自动停止

A: SonarQube内置了Elastic Search来做代码静态分析,而Elastic Search会占用大量内存,可运行free -mh查看是否因为内存不足导致SonarQube崩溃。另外一个原因是,某些SonarQube的Dockerfile有问题,没有设置以非root账号运行SonarQube,而SonarQube只能以非root账号运行。

Q: SonarQube仍然使用默认的H2数据库
A: 参见上面docker-compose.yml部分的说明

Q: 打开SonarQube后发现Rules和Quality Profile为空
A: 参见上面docker-compose.yml部分的说明

参考文档

  • https://docs.sonarqube.org/latest/setup/install-server/
  • https://hub.docker.com/_/sonarqube/
  • https://github.com/SonarSource/docker-sonarqube/blob/master/recipes.md
  • https://gotechnies.com/sonarqube-install-docker-docker-compose-yml/
  • https://pauledenburg.com/sonarqube-postgres-docker-compose/
  • https://funnelgarden.com/sonarqube-jenkins-docker/

你可能感兴趣的:(SonarQube,SonarQube,docker-compose)