费了好大功夫把阿里云上的环境从centos 6.5 升级到了 centos 7,可以折腾docker了。刚好团队需要进行代码质量审计,于是就顺水推舟的用docker去搭建一套sonarcube。以下是详细过程。

使用阿里云加速docker镜像

docker的官方镜像在海外,速度很难让人满意,可以使用阿里云的加速服务。

  • 登陆阿里云为Docker Hub的镜像站点获取专属加速器地址。形如:https://zv123pat.mirror.aliyuncs.com

  • 通过修改daemon配置文件/etc/docker/daemon.json来使用加速器(docker 1.10+)

    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://zv3w4pat.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker

PostgresSQL In Docker

docker pull postgres # 会拉取latest版本。也可以指定版本如:mysql:5.6
# 创建容器并启动,-d为守护运行
docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres

SonarCube In Docker

# 获得sonarcube docker镜像
docker pull sonarqube
# 创建容器并使用mysql,由于我的9000端口被其他占用,所以将其映射到9091上
docker run --name sq --link db -e SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar -p 9000:9000 -d sonarqube
# 查看端口是否开放
netstat -ntlp

使用已有的PostgreSQL搭建SonarCube

# 在PostgreSQL里创建数据库sonar -U是数据库的用户名。需要更改。
createdb -p 5432 -e -U web sonar
# 创建sonarcube的镜像,指定使用该库。用户名密码需要更改。
docker run --name sonarqube \
-e SONARQUBE_JDBC_URL=jdbc:postgresql://172.17.0.5:5432/sonar \
-e SONARQUBE_JDBC_USERNAME=web \
-e SONARQUBE_JDBC_PASSWORD=PASSWORD \
-p 9090:9000 \
-d sonarqube

END