使用Docker+Jenkins+Gitlab+MySQL+Nginx自建一套devops系统

幽沉谢世事,俯默窥唐虞。这篇文章主要讲述使用Docker+Jenkins+Gitlab+MySQL+Nginx自建一套devops系统相关的知识,希望能为你提供帮助。
文章简介文本主要的内容是,利用Jenkins+Gitlab+nginx+mysql+Docker搭建一套公企业级的自动化系统。整个系统的流程图如下。

使用Docker+Jenkins+Gitlab+MySQL+Nginx自建一套devops系统

文章图片

技术介绍硬件设备
  1. Macmini作为局域网内部服务器。
  2. 配置为16G内存。
  3. 硬盘为500G。
在下文演示中,该设备的IP为192.168.2.103。
下文所提到的服务器均指的是这台Macmini设备。
下面提到的局域网内的任意一台设备和Mac都是指的我个人的Mac设备,不是上面提到的Macmini服务器,因此在文章中的演示操作,可能与使用Windows系统的人员有所区别。
软件技术
1.Nginx主要是提供web服务,提供Jenkins、Gitlab的反向代理服务。
2.MySQL提供数据库存储。
3.Gitlab实现代码的托管,webhooks提供自动触发脚本。
4.Jenkins主要负责构建任务。
5.Docker负责Jenkins与Gitlab容器的搭建。
搭建步骤设置远程登录
想要通过shell操作服务器,就需要配置服务器的22端口。Mac具体的配置如下。配置路径:打开系统配置-> 找到共享菜单。
使用Docker+Jenkins+Gitlab+MySQL+Nginx自建一套devops系统

文章图片

局域网内设备与gitlab通信
这里的通信指的是给gitlab配置一个域名,达到通过域名访问gitlab而不是通过ip+端口的方式。下面的Jenkins也是同理。主要是用到了NGINX的反向代理功能,通过访问NGINX配置的域名转发到对应的端口。
我们再NGINX的servers目录下创建一个gitlab.conf的配置文件,写入如下内容:
server
listen 80;
server_name bruce.gitlab.com;
location /
proxy_pass http://127.0.0.1:8081;


接着在我们局域网内的设备上的主机文件hosts中添加如下配置,这样我们就可以通过gitlab.com这个域名访问gitlab了。
192.168.2.103 gitlab.com;

使用Docker+Jenkins+Gitlab+MySQL+Nginx自建一套devops系统

文章图片
使用Docker+Jenkins+Gitlab+MySQL+Nginx自建一套devops系统

文章图片
局域网内设备与Jenkins通信
Jenkins和gitlab的配置同理,下面是具体的NGINX配置文件。这个和上面的gitlab同理,就不提如何访问了。
server
listen 80;
server_name bruce.jenkins.com;
location /
proxy_pass http://192.168.2.103:8080/;


在实际的过程中,不管是通过ip还是配置的虚拟域名,发现都是无法访问,并且使用telnet、ping命令都是无法进行通讯,还需要做如下配置。
docker安装后,默认会创建三种网络类型,bridge、host和none,可通过如下命令查看
sudo docker network ls

bridge:网络桥接
默认情况下启动、创建容器都是用该模式,所以每次docker容器重启时会按照顺序获取对应ip地址,这就导致容器每次重启,ip都发生变化
none:无指定网络
启动容器时,可以通过–network=none,docker容器不会分配局域网ip
host:主机网络
docker容器的网络会附属在主机上,两者是互通的。
创建固定ip容器
1、创建自定义网络类型,并且指定网段
sudo docker network create --subnet=192.168.0.0/16 staticnet

通过docker network ls可以查看到网络类型中多了一个staticnet
2、使用新的网络类型创建并启动容器
sudo docker run -it --name userserver --net staticnet --ip 192.168.0.2 ubuntu /bin/bash

通过docker inspect可以查看容器ip为192.168.0.2,关闭容器并重启,发现容器ip并未发生改变。
配置操作Jenkins基础配置
jenkkin配置gitlab插件。
进入系统管理-> 插件管理-> 可安装插件,输入gitlab,将gitlabplugin插件进行安装。
配置gitlab配置信息。
进入系统管理-> 系统配置-> 找到gitlab配置项,一共有三项:
Connection name:任意填写一个名字即可。
gitlab Host:填写gitlab的url地址即可。上面我给gitlab配置了一个bruce.gitlab.com的域名,因此这里填写这个域名即可。
Crenditals:选择add,根据弹出框选择gitlab APi Token选项。这里只需填写gitlab的token即可。token应该在gitlab中进行获取。获取的途径如下:打开GitLab,点击“setting”——“Account”,选择“Private token”即可。
【使用Docker+Jenkins+Gitlab+MySQL+Nginx自建一套devops系统】配置gitlab的webhooks地址,实现自动化构建、部署。
gitlab基础配置
接下来我们配置,我们主要局域网内的主机的公钥添加到自己对应的gitlab账号中,就可以免密进行提交代码。剩下的操作就和githuab,gitee操作仓库一样操作了。

    推荐阅读