win10下docker-compose搭建gitlab+gerrit+sonar+jenkins持续集成环境
这是一篇纯干货文章,该文章介绍如何使用docker快速搭建持续集成环境。我假定大家看了我前面的两篇文章或者自己了解过docker和docker相关的知识,因此这篇文章目的只有一个,尽快搭建好具备持续集成的环境。准备工作工欲善其事,必先利其器。我们需要把基础环境准备好,基础环境包括:一台性能还可以的安装了win10的电脑(4G以上+双核)docker for windows。powerS...
这是一篇纯干货文章,该文章介绍如何使用docker快速搭建持续集成环境。我假定大家看了我前面的两篇文章或者自己了解过docker和docker相关的知识,因此这篇文章目的只有一个,尽快搭建好具备持续集成的环境。
大纲
为了方便大家理解,也为了让我更好的完成文章编写,我画了一个脑图。这由于画这张脑图的时候并不是所有任务都做完了,所以有些是未完成状态,后续我也会根据进度慢慢完善这张脑图。
准备工作
工欲善其事,必先利其器。我们需要把基础环境准备好,基础环境包括:
- 一台性能还可以的安装了win10的电脑(4G以上+双核)
- docker for windows。
- powerShell(Win10旗舰版自带)
- bios和win10 均开启虚拟化技术(VT)
在安装好docker之后我们需要在磁盘中开辟一个空间用来存放docker相关的配置,我电脑位置为C:/Docker
,然后根据本文需要使用powerShell创建几个基础目录。
PS C:\Docker> mkdir gitlab
PS C:\Docker> mkdir gerrit
PS C:\Docker> mkdir sonarqube
PS C:\Docker> mkdir Jenkins
然后我们需要使用阿里巴巴镜像加速服务,否则在安装对应镜像的时候可能菊花疼。阿里巴巴镜像加速服务会提示如何在docker中配置,这里不多说。
安装工作
安装对应的容器我们使用的docker-compose,在win10最新版本的docker中自带该工具(如果使用linux版我们可能需要单独下载并配置到环境中)。
安装镜像我们使用docker-compose能达到傻瓜式操作,总共就两步:
- 编辑compose配置文件*.yml;
- 运行yml文件;
安装gitlab
Step1:我们在C:/Docker/gitlab
目录下创建一个名字为docker-compose.yml
的文件,然后使用文本编辑工具打开,往里面复制如下内容(了解compose文件格式点击这里):
version: '3'
services:
gitlab:
image: 'twang2218/gitlab-ce-zh:10.5'
container_name: gitlab
restart: unless-stopped
hostname: 'localhost'
environment:
TZ: 'Asia/Shanghai'
ports:
- '10080:80'
- '10443:443'
- '10022:22'
volumes:
- c:/docker/gitlab/data:/var/data/gitlab
- c:/docker/gitlab/log:/var/log/gitlab
在这里我们使用的是gitlab社区版的中文汉化版,国内用这个版本的人挺多的。当然也有很多人用国际版,两者并无本质区别;
restart有多种配置,很多文章写的aways就是你停了还会启动,本文为了很好控制使用停止后不再重启 unless-stopped
Step2:使用docker-compose命令运行这个配置(-d表示在后台运行否则会打印出来)。
PS C:\Docker> cd .\gitlab\
PS C:\Docker\gitlab> docker-compose up -d
这个操作其实在内部是执行了包括读取解析配置,安装需要的镜像,配置对应容器,运行容器4个步骤。
方法非常简单,后面使用compose安装的镜像都是这样的方式,也是非常简单,就那么两步。
注意事项:
- docker-compose指令会解析
当前目录下
的docker-compose.yml,因此大家千万不要搞错目录了。- 卷参的映射不要搞错,linux和windows文件系统是不一样的,如果是windows下就是
- c:/docker/gitlab/etc:/etc/gitlab
这种形式。
然后我们打开docker->dashboard,会看到gitlab已经跑起来了。
使用ps -a命令也能验证(Status一栏会从starting->healthy):
PS C:\Docker\gitlab> docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
138b843d9222 twang2218/gitlab-ce-zh:10.5 "/assets/wrapper" 9 minutes ago Up 9 minutes (healthy) 0.0.0.0:10022->22/tcp, 0.0.0.0:10080->80/tcp, 0.0.0.0:10443->443/tcp gitlab_gitlab_1
如果还不放心可以打开浏览器,输入配置文件中对应的网址,进入gitlab管理页面:
安装Gerrit
Gerrit的安装和gitlab安装基本一致,不同的是gerrit安装后需要配置验证方式。
Step1:我们在C:/Docker/gerrit
目录下创建一个名字为docker-compose.yml
的文件,然后使用文本编辑工具打开,往里面复制如下内容(了解compose文件格式点击这里):
这里使用的是github上的镜像,英文版的,我抄过来了,戳这里;
version: '3'
services:
gerrit:
image: gerritcodereview/gerrit
container_name: gerrit
ports:
- "29418:29418"
- "20080:8080"
depends_on:
- ldap
volumes:
- c:/docker/gerrit/etc:/var/gerrit/etc
- c:/docker/gerrit/git:/var/gerrit/git
- c:/docker/gerrit/db:/var/gerrit/db
- c:/docker/gerrit/index:/var/gerrit/index
- c:/docker/gerrit/cache:/var/gerrit/cache
- c:/docker/gerrit/logs:/var/gerrit/logs
environment:
- CANONICAL_WEB_URL=http://localhost:20080
#entrypoint: /entrypoint.sh init
ldap:
image: osixia/openldap
container_name: openldap
ports:
- "389:389"
- "636:636"
environment:
- LDAP_ADMIN_PASSWORD=secret
volumes:
- c:/docker/gerrit/ldap/var:/var/lib/ldap
- c:/docker/gerrit/ldap/etc:/etc/ldap/slapd.d
ldap-admin:
container_name: phpldapadmin
image: osixia/phpldapadmin
ports:
- "6443:443"
environment:
- PHPLDAPADMIN_LDAP_HOSTS=ldap
Step2:使用docker-compose命令运行这个配置。
PS C:\Docker\gitlab> cd ..\gerrit\
PS C:\Docker\gerrit> docker-compose up -d
验证方式和gitlab一样,docker->dashboard
Step3 修改验证配置
我们知道gerrit登录有好几种方式,一般网上会推荐使用openID或者oAuth的方式,但是我发现当有多个服务运行的时候,管理密码是一件挺头疼的事情,于是引入了Ldap,我们再yml配置文件中能找到ldap的踪影;
具体就是修改C:/docker/gerrit/etc/gerrit.config
这个文件,内容修为如下:
gerrit]
basePath = git
canonicalWebUrl = http://localhost:20080
......
[index]
type = lucene
[auth]
type = ldap
gitBasicAuth = true
[ldap]
server = ldap://ldap
username=cn=admin,dc=example,dc=org
accountBase = dc=example,dc=org
accountPattern = (&(objectClass=person)(uid=${username}))
accountFullName = displayName
accountEmailAddress = mail
[sendemail]
smtpServer = localhost
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = http://*:8080/
[cache]
directory = cache
[container]
user = root
同时我们需要修改ldap对应的密码(密码按照自己要求修改),位于C:/docker/gerrit/etc/secure.config
[ldap]
password = secret
到这里Gerrit就启动完成了,打开ldap管理界面添加用于Gerrit的管理员账号密码。账号就是我们gerrit.config文件中配置的:
用户名:cn=admin,dc=example,dc=org
密码: secret
登陆https:localhost:6443
进去后,操作分别是:点击用户名->Create a child entry->选择第一个模板->输入信息->创建->commit;
参数为:
Given Name: Gerrit
Last Name: Admin
Common Name: Gerrit Admin
User ID: gerritadmin
Email: gerritadmin@localdomain
Password: secret
现在我们可以用杠杆再ladp上创建的账号登录gerrit了;gerrit的网址是http:localhost:20080
安装sonarqube
Step1:我们在C:/Docker/sonarqube
目录下创建一个名字为docker-compose.yml
的文件,然后使用文本编辑工具打开,往里面复制如下内容(官网的sonarqube的数据库镜像不稳定,我换成了国内大神的):
version: '2'
services:
# database service: mysql
mysql:
image: liumiaocn/mysql:5.7.16
container_name: mysql
restart: unless-stopped
ports:
- "3306:3306"
volumes:
- c:/docker/sonarqube/mysql/lib:/var/lib/mysql
- c:/docker/sonarqube/mysql/etc:/etc/mysql/conf.d
environment:
- MYSQL_ROOT_PASSWORD=hello123
- MYSQL_DATABASE=sonarqube
# Security service: sonarqube
sonarqube:
image: liumiaocn/sonarqube:6.7.1
container_name: sonarqube
restart: unless-stopped
ports:
- "9000:9000"
volumes:
- c:/docker/sonarqube/conf:/opt/sonarqube/conf
- c:/docker/sonarqube/extensions:/opt/sonarqube/extensions
- c:/docker/sonarqube/log:/opt/sonarqube/log
- c:/docker/sonarqube/data:/opt/sonarqube/data
environment:
- SONARQUBE_JDBC_USERNAME=root
- SONARQUBE_JDBC_PASSWORD=hello123
- SONARQUBE_JDBC_URL=jdbc:mysql://mysql:3306/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
links:
- mysql:mysql
depends_on:
- mysql
Step2:使用docker-compose命令运行这个配置。
PS C:\Docker\gerrit> cd ..\sonarqube\
PS C:\Docker\sonarqube> docker-compose up -d
注意: PostgreSQL数据库可以替换成其他的数据库,默认是用的嵌入式H2数据库,H2是一个内存数据库,重启后数据就没有了。
验证SonarQube是否安装成功了,打开http://localhost:8007
,能够正常访问代表成功;
安装Jenkins
老规矩,贴上yml文件,这里使用的官方的镜像;
version: '3'
services:
docker_jenkins:
restart: unless-stopped
image: jenkins/jenkins:lts
container_name: jenkins
ports:
- '30080:8080'
- '50000:50000'
volumes:
- c:/docker/jenkins/plugins/:/var/jenkins_home/plugins
- c:/docker/jenkins/secrets/:/var/jenkins_home/secrets
- c:/docker/jenkins/docker.sock:/var/run/docker.sock
然后启动
PS C:\Docker\sonarqube> cd ..\jenkins\
PS C:\Docker\jenkins> docker-compose up -d
然后我们会看到这样一个登陆界面,他告诉我们密码保存在C:\Docker\jenkins\data\secrets\nitialAdminPassword文件中,如果你忘记密码了也可以在这里面找到。
我们复制密码,下一步进入到创建管理员用户界面。我把我的信息填写进去;
我填写的信息如下:
Username:jenkins
Password: 12345678
Confirm password:12345678
Full name:Jekins Admin
注意:中间会提示你安装插件,你可以选择推荐配置也可以自定义配置,我喜欢自定义配置,因为推荐配置安装要很长时间。
最终,我们会进入到Jenkins管理页面,到这里持续集成环境就搭建成功了。
默认是英文界面,如果你想要换成中文,需要在Jenkins->Manage Jenkins->Config System->control+f搜索
勾选下载完成重启,再次登陆后就是中文界面了。
这里贴上清华的源,有些同学反馈下载插件太慢了。
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
如果更换了源还是很慢,建议编辑Jenkins\updates\default.json。把里面的google改成百度,然后重启;root@ad3e3a6dabb3:/var/jenkins_home/updates# vim default.json
更多推荐
所有评论(0)