sonarqube中文版docker 制作及其使用

目标: 1.创建sonarqube 中文版docker
2. 使用postgres 作为存储数据库
3. 运行并测试代码
4. 发布到docker hub 分享
5.在mesos-marathon 平台运行

环境: sonarqube Community Edition版本 7.7 (build 23042)

第一步: 编译镜像前的准备工作
1.1 到docker hub 上搜索最新版的镜像sonarqube:7.7-community
1.2 到https://github.com/SonarQubeCommunity/sonar-l10n-zh.git 下载对应的中文插件包

注意参考下面的兼容矩阵表格:
sonarqube中文版docker 制作及其使用_第1张图片
1.3 下载对应的插件
https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/tag/sonar-l10n-zh-plugin-1.27

1.4 创建一个文件夹 sonarqube, 里面结构如下
drwxr-xr-x 9 happy staff 288 4 12 10:33 .
drwxr-xr-x 20 happy staff 640 4 10 23:53 …
drwxr-xr-x 12 happy staff 384 4 12 10:33 .git
-rw-r–r-- 1 happy staff 27 4 12 10:33 .gitignore
-rw-r–r-- 1 happy staff 397 4 12 10:31 Dockerfile
-rw-r–r-- 1 happy staff 282 4 9 16:21 README.md
drwxr-xr-x 7 happy staff 224 4 12 10:50 examples
-rwxr-xr-x 1 happy staff 1093 4 12 10:21 runDockerBuild
drwxr-xr-x 6 happy staff 192 4 12 10:26 software

编写Dockerfile 内容如下:
#more Dockerfile
FROM sonarqube:7.7-community

#https://github.com/SonarQubeCommunity/sonar-l10n-zh.git
RUN rm -rf /opt/sonarqube/extensions/plugins
ADD software/plugins.tgz /opt/sonarqube/extensions/
#中文语言包(其实上面的plugins.tgz包里有这个插件,但是为了确保以后不忘记加入这个中文语言插件包)
ADD software/sonar-l10n-zh-plugin-1.27.jar /opt/sonarqube/extensions/plugins/

#编写runDockerBuild 自动化脚本
#more runDockerBuild

#!/bin/bash
current_shell_file_path= ( c d " (cd " (cd"(dirname “$0”)"; pwd)

cd ${current_shell_file_path}
pwd && ls -a

branch_name=$(git status | grep ‘On branch’ | awk ‘{print $3}’)

if [[ -z $branch_name ]];
then
if [[ -z $1 ]];
then
branch_name=$1
else
echo “请输入镜像标签,如v1.0.0”
exit 1
fi
fi

#sonarqube:lts-alpine-zh
docker build -t ascs/sonarqube:$branch_name . --no-cache=true

如果需要镜像预装好所有的常见插件,则先 运行 一个实例,
然后 docker exec -ti sonarqube_en bash
sonarqube@sonarqube_en:/opt/sonarqube/extensions$ ls
downloads jdbc-driver plugins

把plugins 拷贝出来,变成一个plugins.tgz, 安装镜像的时候安装进去。这样镜像启动后就有了你想要的插件.
先选择你要的插件,然后点击安装,然后重现启动sonarqube, 直到您认为,该装的插件已经安装OK了就可以准备下面的打包了.

docker cp sonarqube_en:/opt/sonarqube/extensions/plugins plugins
tar -czf plugins.tgz plugins

这样插件就准备了。

第二步: 用git 管理文件
git init

happy:sonarqube happy$ more .gitignore
/software/.tgz
software/

examples/pgdata/

第三步: 编译镜像:
happy:sonarqube happy$ git status
On branch 7.7-community-zh-with-plugins

./runDockerBuild

第四步: 测试镜像是否正常
4.1 启动postgre 实例
4.2 启动 sonarqube 实例
4.3 打开网页测试

happy:examples happy$ ls
marathon start-docker.sh start-sonarqube-with-postgres.sh
pgdata start-postgres-docker.sh

happy:examples happy$ more start-sonarqube-with-postgres.sh
#!/bin/bash
docker stop  sonarqube
docker rm    sonarqube
echo "请先启动postgres 数据库"
#下面的IP要设置为运行postgres实例的计算机的IP
host_ip="192.168.2.85"

docker run -d \
--name sonarqube \
--add-host "postgres.tools.devops.marathon.mesos:${host_ip}" \
-e  "sonar.jdbc.username=postgres" \
-e  "sonar.jdbc.password=your_password" \
-e  "TZ=Asia/Shanghai" \
-e  "sonar.jdbc.url=jdbc:postgresql://${host_ip}:5432/sonarqube" \
-p 9000:9000 \
ascs/sonarqube:7.7-community-zh-with-plugins

echo "缺省用户名:admin 缺省密码:admin"
happy:examples happy$ ls
marathon				start-docker.sh				start-sonarqube-with-postgres.sh
pgdata					start-postgres-docker.sh
happy:examples happy$ more start-postgres-docker.sh
#!/bin/bash

docker stop postgres-for-sonarqube
docker rm   postgres-for-sonarqube

docker run -d \
--name postgres-for-sonarqube \
-p 5432:5432 \
-v `pwd`/pgdata:/var/lib/postgresql/data \
-e "POSTGRES_USER=postgres" \
-e "POSTGRES_PASSWORD=your_password" \
-e "POSTGRES_DB=sonarqube" \
postgres:9.6.12-alpine
happy:examples happy$

sonarqube中文版docker 制作及其使用_第2张图片

打开一款数据连接软件,确认一下数据库真的已经连接成功,并被使用了。
(之前遇到的是数据库配置问题,导致sonarqube使用的是本地H2实例,被红色警告,只能当demo使用)
sonarqube中文版docker 制作及其使用_第3张图片

第五步: 发布镜像
docker login

docker push ascs/sonarqube:7.7-community-zh-with-plugins

sonarqube中文版docker 制作及其使用_第4张图片
这样就可以在有互联网的地方随时使用这个镜像了.

docker push ascs/sonarqube:7.7-community-zh-with-plugins

相关代码可以查看 github
https://github.com/HappyFreeAngel/sonarqube-docker.git

你可能感兴趣的:(常用工具,DevOps)