仗剑江湖载酒行

通过docker部署SonarQube

2020.11.24

SonarQube 是一款代码质量管理工具,在国内有大量拥趸。本文仅记述通过docker-compose安装其社区版的方法,不对其本身的分析能力做评述。

为了偷懒和方便测试,我们先编写一个Makefile

.PHONY : clean

mkdir:
	mkdir -p "data/postgres/data"
	mkdir -p "data/postgres/postgresql"
	mkdir -p "data/postgres/postgresql"
	mkdir -p "data/sonarqube/conf"
	mkdir -p "data/sonarqube/data"
	mkdir -p "data/sonarqube/extensions"
	mkdir -p "data/sonarqube/logs"

clean:
	rm -rf ./data/postgres/data/*
	rm -rf ./data/postgres/postgresql/*
	rm -rf ./data/sonarqube/data/*
	rm -rf ./data/sonarqube/extensions/*
	rm -rf ./data/sonarqube/logs/*

运行make命令,初始化好我们需要挂载的本地目录。在相同的目录下,创建docker-compose.yml文件,并写入以下内容:

version: '3'

services:
  postgres:
    image: 'postgres:12-alpine'
    restart: always
    container_name: postgres
    volumes:
      - ./data/postgres/postgresql/:/var/lib/postgresql
      - ./data/postgres/data/:/var/lib/postgresql/data
    environment:
      TZ: Asia/Shanghai
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
      POSTGRES_DB: sonar

  sonar:
    image: 'sonarqube:8.5-community'
    container_name: sonar
    depends_on:
      - postgres
    volumes:
      - ./data/sonarqube/extensions:/opt/sonarqube/extensions
      - ./data/sonarqube/logs:/opt/sonarqube/logs
      - ./data/sonarqube/data:/opt/sonarqube/data
      - ./data/sonarqube/conf:/opt/sonarqube/conf
    ports:
      - 9000:9000
    environment:
      SONARQUBE_JDBC_USERNAME: sonar
      SONARQUBE_JDBC_PASSWORD: sonar
      SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonar

运行docker-compose up -d,安装整个SonarQube和其依赖的服务镜像。如果销毁这些容器后,可以运行make clean命令,清除资源。