基于Docker+Jenkins+Git的集成开发环境搭建

第一章: 是什么

Docker

Docker是基于Go语言编写, 用于解决运行环境和配置问题软件容器 , 并方便做持续集成和整体发布开源容器引擎
Docker详细内容学习
Docker简要内容学习

Jenkins

Jenkins是基于Java语言编写, 用于持续、自动构建/测试软件项目持续集成(CI)工具
简书大佬讲解的关于Jenkins的教程
Jenkins中文官方文档

GIT

Git是基于C编写, 用于敏捷高效地对项目进行持续集成分布式版本控制系统
Git简要教程

持续集成(CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
通俗的说,就是指对于开发人员的每一次代码提交,都自动地把Repository中所有代码Check out到一个空目录,并且自动运行所有Test Case。如果成功则接受这次提交,否则告诉所有人,这是一个失败的Revision。

第二章: 做什么

开发人员开发代码完成后, 将代码上传到git上面, git hook调用脚本将项目在Jenkins上进行构建. Jenkis构建完成后通过shell脚本将项目通过Docker打包成镜像文件, 通过将镜像文件部署到网站上, 我们就可以下载并运行镜像后直接在网页上面看到开发的成果了. 如下图:
整体流程

整个流程的核心: Docker与Jenkins的结合

  • 通过Docker管理Jenkins资源
  • 通过Jenkins创建Docker镜像

第三章: 怎么做

1. 提前准备

  • 一台提供Git服务的服务器(也可直接使用github或oschina服务);

  • 一台运行Jenkins服务的服务器;

  • 一台或若干Docker宿主机服务器;

2. 搭建环境

# 0. 在安装Jenkins的服务器上提前安装tomcat, maven以及JDK

# 1. 部署安装Jenkins(实际工作中Jenkins,docker,git应该不同服务器中, 但是非工作环境下服务器资源有限,因此安装在一个服务器下)
# a.在tomcat的webapps目录下,放入下载好的Jenkins的war包,下载地址如下(图1)
https://www.jenkins.io/download/
# b.启动tomcat,登陆Jenkins(图2)
http://4host:8080/jenkins/
# c.查看密码,复制密码到图2的管理员密码下, 成功后根据提示创建Jenkins的管理员账号和密码
cat /root/.jenkins/secrets/initialAdminPassword

# 2.搭建Docker宿主机, 安装步骤可见本人docker博客或者官网的安装文档
https://blog.csdn.net/qq_43371556/article/details/102631158
https://docs.docker.com/get-docker/

ps: 也可通过本次尝试的方法,利用yum命令进行直接下载. 步骤如下
a.下载docker
yum install docker 
b.指定docker账号,用于专门登录docker 
useradd -g docker docker -d /home/docker -s /bin/bash
c.修改账户docker的密码也为docker
echo "docker:docker" | chpasswd 
d.创建父目录,该目录用于存放docker脚本,脚本deploy.sh见附件
mkdir /data/dokerfiles/scripts -p
e.赋予该文件夹属主为docker
chown -R docker:docker /data/dockerfiles
chmod +x deploy.sh
f.启动docker后,配置docker镜像加速,加速网址 https://www.daocloud.io/mirror#accelerator-doc
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
systemctl daemon-reload
systemctl restart docker
g.重启docker后下载Tomcat镜像
docker pull tomcat


# 3.登录到Jenkins图形化页面( http://ip:8080/jenkins/ )

图1
在这里插入图片描述

图2
在这里插入图片描述

3. 操作Jenkins

## 一. 登录到Jenkins后,进行配置
# 1. 进行全局配置, 配置Maven,git,jdk等相关参数,见(图1-4),作用是指定这些软件或者配置文件的位置
# 2. 进行系统配置, 配置Publish over SSH, 作用是通过ssh的作用将项目部署到宿主机上, 如图5
# 3. 配置完成以后, 为了能够创建maven项目需要下载相关插件, 首先查看已安装的插件,安装如下插件(图6,图7)
Git Parameter Plug-In
GIT server Plugin	
GitHub Branch Source Plugin
Maven Integration plugin
Publish Over SSH
Subversion Plug-in
GitLab
SSH

## 二. 安装插件
# 4. 安装方式
a. 在安装插件的页面有Updates,Available,Installed,Advanced, 分别代表可更新的,可下载的,已安装的,以及高级配置
b. 点击可下载的,在里面输入需要下载的插件名称 (需要什么就下载什么)

图1
在这里插入图片描述
图2
在这里插入图片描述
图3
在这里插入图片描述
图4
在这里插入图片描述

图5
在这里插入图片描述

图6
在这里插入图片描述
图7
在这里插入图片描述

4. 创建项目

## 一. 选择左侧工具栏, new item,创建maven项目
# 1. 在通用配置中, 配置
a. git参数, 用于将项目通过指定分支构建; string类型参数, 用于后期项目名称的统一定义(图1)
b. 源代码管理, 配置git仓库的url, 发布的分支(图2)
c. 构建后的配置, 配置docker相关参数信息(图3)

## 二. 构建项目
# 1. 在首页项目的name右边,点击倒三角, 选择Build with parameters(图4)
# 2. 构建成功后git/svn上面的项目即可被打包成镜像文件, 我们下载并运行相关镜像文件即可访问项目

图1
在这里插入图片描述

图2
在这里插入图片描述
图3
在这里插入图片描述

图4
在这里插入图片描述
图5
在这里插入图片描述
图6
在这里插入图片描述

  1. 需要注意的是,在构建项目后,需要根据模块去构建项目, 而不能整体的去构建项目
  2. 构建成功后,会将项目代码生成docker镜像文件,在docker所在宿主机上下载代码即可运行构建后的项目(而本实战使用了脚本,在构建后会自动的部署项目并运行)

脚本文件deploy.sh
链接:https://pan.baidu.com/s/1kZF59YWulPz9ufbwd6Ordg
提取码:q60e
点击观看该实战配套的视频

亲亲, 这边建议您点个赞赞哦~~~
在这里插入图片描述

  • 9
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class system extends JFrame { JDesktopPane deskpane = new JDesktopPane();//在窗体里建立虚拟桌 JPanel p = new JPanel();//创建一个面板并实例化 public system(){//构造函数 setTitle("订单管理系统");//设置窗体标题 Container con = getContentPane(); con.setLayout(new BorderLayout());//创建一个布局 con.add(deskpane,BorderLayout.CENTER);//实例虚拟桌面的布局 Font f =new Font("新宋体",Font.PLAIN,12); JMenuBar mb = new JMenuBar();//实例化菜单栏 mb.setOpaque(true); setJMenuBar(mb); mb.setOpaque(true); setJMenuBar(mb); JMenu systemM = new JMenu("系统管理"); systemM.setFont(f); mb.add(systemM); JMenuItem land = new JMenuItem("重新登陆"); land.setFont(f); JMenuItem exit = new JMenuItem("退出系统"); exit.setFont(f); systemM.add(land); systemM.add(exit); JMenu userM = new JMenu("用户管理"); userM.setFont(f); mb.add(userM); JMenuItem password = new JMenuItem("密码修改"); password.setFont(f); JMenuItem addDelete = new JMenuItem("添加/删除用户"); addDelete.setFont(f); userM.add(password); userM.add(addDelete); JMenu mesM = new JMenu("信息管理"); mesM .setFont(f); mb.add(mesM ); JMenu addM= new JMenu("添加信息"); addM.setFont(f); JMenu viewM = new JMenu("查看信息"); viewM.setFont(f); JMenu modifM = new JMenu("修改信息"); modifM.setFont(f); JMenu deleteM = new JMenu("删除信息"); deleteM.setFont(f); mesM.add(addM); mesM.add(viewM); mesM.add(modifM); mesM.add(deleteM); JMenuItem addgoods = new JMenuItem("添加商品信息"); addgoods.setFont(f); addM.add(addgoods); JMenuItem addclient = new JMenuItem("添加客户信息"); addclient.setFont(f); addM.add(addclient); JMenuItem viewgoods= new JMenuItem("查看商品信息"); viewgoods.setFont(f); viewM.add(viewgoods); JMenuItem viewclient = new JMenuItem("查看客户信息"); viewclient.setFont(f); viewM.add(viewclient); JMenuItem modifgoods = new JMenuItem("修改商品信息"); modifgoods.setFont(f); modifM.add(modifgoods); JMenuItem modifclient = new JMenuItem("修改用户信息"); modifclient.setFont(f); modifM.add(modifclient); JMenuItem deletegoods = new JMenuItem("删除商品信息"); deletegoods.setFont(f); deleteM.add(deletegoods); JMenuItem deleteclient = new JMenuItem("删除用户信息"); deleteclient.setFont(f); deleteM.add(deleteclient); JMenu orderM = new JMenu("订单管理"); orderM.setFont(f); mb.add(orderM); JMenuItem addO= new JMenuItem("添加订单"); addO.setFont(f); JMenuItem viewO = new JMenuItem("查看订单"); viewO.setFont(f); JMenuItem modifO = new JMenuItem("修改订单"); modifO.setFont(f); JMenuItem deleteO = new JMenuItem("删除订单"); deleteO.setFont(f); orderM.add(addO); orderM.add(viewO); orderM.add(modifO); orderM.add(deleteO); //主界面上标出学号、姓名、及所作系统名 JLabel jlabel1=new JLabel(); jlabel1.setFont(new Font("宋体",Font.BOLD,15)); //设置字体 jlabel1.setHorizontalAlignment(SwingConstants.CENTER); //设置位置 jlabel1.setText("简易订单管理系统学号:070810228" + " 姓名:廖太春指导老师:周老师"); jlabel1.setBounds(450,350, 200, 200); deskpane.add(jlabel1); password.addActionListener(new ActionListener(){//密码修改监听 public void actionPerformed(ActionEvent e){ System.out.println("修改密码"); deskpane.add(new modifpsw()); } }); land.addActionListener(new ActionListener(){//重新登陆监听 public void actionPerformed(ActionEvent e){ System.out.println("登录"); setVisible(false); new Land(); } }); addDelete.addActionListener(new ActionListener(){//添加/删除用户监听 public void actionPerformed(ActionEvent e){ deskpane.add(new AddDeleteUser()); } }); addgoods.addActionListener(new ActionListener(){//添加商品信息 public void actionPerformed(ActionEvent e){ deskpane.add(new addgoods()); } }); addclient.addActionListener(new ActionListener(){//添加用户信息 public void actionPerformed(ActionEvent e){ deskpane.add(new addclient()); } }); viewgoods.addActionListener(new ActionListener(){//查看商品信息 public void actionPerformed(ActionEvent e){ System.out.println("查看商品信息"); deskpane.add(new viewgoods()); } }); viewclient.addActionListener(new ActionListener(){//查看客户信息 public void actionPerformed(ActionEvent e){ System.out.println("查看客户信息"); deskpane.add(new viewclient()); } }); modifgoods.addActionListener(new ActionListener(){//修改商品信息 public void actionPerformed(ActionEvent e){ System.out.println("修改商品信息"); deskpane.add(new modifgoods()); } }); modifclient.addActionListener(new ActionListener(){//修改用户信息 public void actionPerformed(ActionEvent e){ System.out.println("修改用户信息"); deskpane.add(new modifclient()); } }); deletegoods.addActionListener(new ActionListener(){//删除商品信息 public void actionPerformed(ActionEvent e){ System.out.println("删除商品信息"); deskpane.add(new deletegoods()); } }); deleteclient.addActionListener(new ActionListener(){//删除用户信息 public void actionPerformed(ActionEvent e){ System.out.println("删除用户信息"); deskpane.add(new deleteclient()); } }); addO.addActionListener(new ActionListener(){//添加订单 public void actionPerformed(ActionEvent e){ deskpane.add(new addO()); } }); viewO.addActionListener(new ActionListener(){//查看订单 public void actionPerformed(ActionEvent e){ deskpane.add(new viewO()); } }); modifO.addActionListener(new ActionListener(){//修改订单 public void actionPerformed(ActionEvent e){ System.out.println("修改订单"); deskpane.add(new modifO()); } }); deleteO.addActionListener(new ActionListener(){//删除订单 public void actionPerformed(ActionEvent e){ System.out.println("/删除订单"); deskpane.add(new deleteO()); } }); exit.addActionListener(new ActionListener(){//退出系统监听 public void actionPerformed(ActionEvent e){ setVisible(false); } }); this.setBounds(200,200,700,600); setVisible(true); } public static void main(String[] args){ new Land(); } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时间静止不是简史

感谢你的肯定, 我将继续努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值