使用容器jenkins+docker自动化部署项目

本文介绍如何在一台小霸王服务器上实现服务的Docker化,并通过Jenkins自动化部署项目。利用Docker和Jenkins,即使在内存不足的情况下也能快速调整服务,保持系统的高可用性。文章详细介绍了部署Jenkins的过程,包括镜像拉取、共享文件夹配置、容器启动等步骤,以及如何通过Shell脚本实现项目自动化构建和Docker镜像的构建与运行。

关于这篇文章的产生

直接使用jenkins部署项目的流程很简单,直接配置完maven+git插件,然后创建工程可以直接部署,后面再加几个简单的shell脚本命令就完事了。现在我有一台1核2G内存的小霸王,想要所有服务docker化,即当内存不够用的时候能迅速结束掉某个不相关的服务,保存系统最大程度的可用性,各个服务之间保持独立性。首先解决程序自动化部署问题。docker下jenkins+由jenkins构建完成后的系统打包成镜像运行。我们假设宿主机是完全纯净的系统,即只有一个docker服务,没有java运行环境,我们只需要由docker提供所需要的服务就可以了

首先部署jenkins

获取jenkins镜像(该步骤可以省略,为了让流程清晰,我还是加上了)

docker pull jenkins

在用户根目录创建一个共享文件夹jenkins_home,赋予1000组跟用户

cd ~
mkdir jenkins_home
chown -R 1000:1000 jenkins_home

直接启动镜像

docker run -d --name jenkins -p 8085:8080 -p 50000:50000 -v ~/jenkins_home:/var/jenkins_home -u 0 jenkins

启动镜像之后访问域名加8085就可以进入jenkins初始化配置阶段了,具体的页面不再展示,网上有很多安装jenkins的教程,根据提示一步步来就可以了。需要注意的是:在安装插件的时候会有一个推荐设置,这时候我们最好不要勾选,因为插件安装的有点多,很多不是我们需要的,如果网络不好的话会安装失败,后面我们只需要安装一个git插件和一个maven插件还有一个ssh基本就能满足我们的需要了
推荐安装的几个插件

  • Deploy to container Plugin
  • Git Parameter Plug-In
  • Maven Integration plugin
  • Publish Over SSH
  • Safe Restart Plugin

jenkins所有构建的目录都会映射到宿主机~/jenkins_home目录下面,目录结构也是顾名思义,plugins表示安装的插件,插件的调用命令放在tools里面,这个我们后面会用到。workspace目录就是工作目录,即所有的构建项目都会放在这里面,构建完成之后我们可以随意操作里面的资源

开始部署项目

配置好jenkins之后创建maven构建项目,然后最后配置一下一个shell脚本。
maven的项目会自动进行打包处理,我们需要处理的是打包之后如果构建成docker镜像来直接运行。
由于我们的jenkins是在容器内的,所以无法直接调用宿主机的docker命令来构建镜像。有两种方法可以调用到docker,一种是网上比较通用的,在启动jenkins的时候将docker运行环境目录配置到jenkins里面可以调用宿主机,这种方法我没有试过。另一种是我用的比较简单粗暴的方法,直接由容器内jenkins通过ssh连接到宿主机,然后根据映射到宿主机内的workspace去执行命令。
主要是执行这个shell脚本

#!/bin/bash
mvn install
echo please wait, connect host and build images.
ssh root@172.18.0.1 > /dev/null 2>&1 << hjlinfo
cd /root/jenkins_home/workspace/mall
/root/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven3.6/bin/mvn install
docker stop mall-admin
docker rm mall-admin
docker image rm stingers/mall-admin
cd /root/jenkins_home/workspace/mall/mall-admin
/root/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven3.6/bin/mvn clean package docker:build
docker run --name mall-admin -d -p 8086:8086 stingers/mall-admin
exit
hjlinfo
echo done!

这样就实现了容器jenkins+docker自动化部署。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值