使用容器jenkins+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 [email protected] > /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自动化部署。

你可能感兴趣的:(服务器部署,docker)