docker搭建jenkins+maven代码构建部署平台

目录
  • Docker基本概念
  • Docker安装过程(Centos6.9)
    • 升级内核
    • 安装docker-io
  • 基于Docker的jenkins安装
    • 拉取应用
    • 运行容器
    • 跟踪应用log
    • 关闭打开容器
  • tomcat账户配置
  • 配置jenkins,构建部署war应用
    • 配置JDK、Maven等参数
    • 新建任务构建部署
  • 通过ssh脚本部署maven项目到指定Tomcat中
    • 配置Publish Over SSH插件
    • 编写部署ssh脚本
    • 项目构建配置

由于项目开发,经常需要在本地搭一些环境进行开发或测试,大家知道搭环境、装软件、装中间件是件非常麻烦的事情,有些软件的安装可能需要依赖其它环境的安装,如安装rabbitmq首先需要Erlang语言环境,一整套安装下来不仅浪费时间而且还各种问题出现,严重影响开发进度。对于开发者来讲,life is short, 尽一切可能提高开发效率。

Docker的出现对于技术界无疑是一件划时代的事件,Docker由于具体丰富的应用镜像仓库、使用方便及可移植性而深受广大IT从业人员喜爱。用Docker部署或安装相应的应用不用花太多时间在安装过程及细节、依赖上,真正做到开箱即用。本文以jenkins的搭建为例,说明Docker的基本操作过程:拉取镜像、运行容器、文件挂载、跟踪运行、关闭容器等,希望对刚入门Docker的技术爱好者能有所帮助。

Docker基本概念

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。其实Docker最经典的是那张“背有集装箱的海豚”图,这张图充分说明了docker引擎与容器之间的关系。
掌握镜像、容器、仓库基本就对Docker了解得差不多了,就能正确的使用Docker.

  • 镜像:可以理解为应用的“源码”或.exe安装文件;
  • 容器:就是镜像运行后的实例,与镜像的关系其实就如“对象”与“类”的关系;
  • 仓库:发布镜像的仓库,在仓库中可以下载或拉取各种镜像(应用)而Docker则是一个容器运行所需要的引擎,所有的容器均运行在引擎之中。

Docker安装过程(Centos6.9)

升级内核

Centos6.9需要升级内核版本才可以安装Docker,升级过程如下
1.引入key

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm

2.yum安装

yum --enablerepo=elrepo-kernel -y install kernel-lt

3.引导文件修改(grub.conf

vim /etc/grub.conf

将 default 设置为 0 ,default=0

4.重启

安装docker-io

1.安装EPEL源

yum install http://mirrors.yun-idc.com/epel/6/x86_64/epel-release-6-8.noarch.rpm

2.安装docker-io

yum -y install docker-io

3.启动docker服务

service docker start

基于Docker的jenkins安装

拉取应用

运行容器/实例之前,需要从docker hub仓库中拉取相应的镜像,可查看官网关于jenkins镜像上的一些介绍,其中对于安装命令、配置信息及文件目录都有于详细的说明。
从仓库中拉取最新的jenkins,docker pull jenkins,拉取其它版本的可通过命令docker pull jenkins:<version>

运行容器

运行容器/实例,需要考虑到本地端口与docker容器的映射,以便通过本地主机可以访问。由于容器本身并不会持久化文件,其实docker不建议在容器中进行任何文件有关的写入操作,仅仅当作一个“容器”使用。如果容器应用运行过程中会产生许多重要的数据需要保存或配置,如mysql的db文件,jenkins的插件、配置文件等,则建议将容器的文件挂载到本地,也即volume映射。

docker run -p 8080:8080 -p 50000:50000 -v /usr/local/docker_volume/jenkins:/var/jenkins_home -v /usr/local/apps/maven-3.3.9:/var/maven_home -v /usr/local/apps/maven-3.3.9/repo:/usr/local/apps/maven-3.3.9/repo --name my_jenkins -d jenkins

其中-p表示端口映射,即将本机上的端口映射到容器上的端口;
-v表示文件映射,即本机与容器共享映射,挂载文件
注意:由于jenkins构建maven项目需要依赖maven项目,因此在运行容器的时候将本机的maven_home共享给容器。由于容器运行时需要在本机共享文件中写入,需要写权限,sudo chown -R 1000:1000 /usr/local/docker_volume/jenkins sudo chown -R 1000:1000 sudo chown -R 1000:1000

运行以上命令,窗口会打印容器id,通过docker ps可查看运行的容器状态及相关信息。

跟踪应用log

输入docker logs <CONTAINER ID>即可跟踪容器打印日志,初次启动jenkins会在日志中打印密码,复制后用于登陆jenkins.

关闭打开容器

关闭:docker stop <CONTAINER ID>
打开:docker start <CONTAINER ID>

tomcat账户配置

本例将maven编译后的war部署到远程tomcat,因此需要在tomcat中设置部署权限,编辑/con/tomcat-users.xml配置文件,加入账户

<role rolename="tomcat"/>
<role rolename="admin"/>
<role rolename="admin-gui"/>
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="admin,manager,tomcat,manager-gui,manager-script,manager-jmx,manager-status"/>
<user username="root" password="admin" roles="admin,manager,tomcat,manager-gui,manager-script,manager-jmx,manager-status,admin-gui"/>

配置jenkins,构建部署war应用

至此,通过访问http://本机ip:8080即可访问到jenkins平台,选择默认安装插件,安装成功后选择设置账号等.

配置JDK、Maven等参数

在 “系统设置—> Global Tool Configuration”中添加JDK安装如下图所示

安装“Deploy to container Plugin”插件用于部署war程序
在”系统设置—> 管理插件—>可选插件”中安装

新建任务构建部署

添加svn源码地址、tomcat部署地址

tomcat 部署配置,配置登录tomcat的账号

通过ssh脚本部署maven项目到指定Tomcat中

用以上方法在tomcat自带的deployment实现部署对于服务器性能消耗较大,经常会出现如内存溢出等问题,导致部署失败。采用ssh脚本部署的方式则方便快捷很多,对于内存消耗也没有那么多。

配置Publish Over SSH插件

在”系统设置—> 管理插件—>可选插件”中安装(Publish Over SSH)插件,然后在“系统管理—>系统设置—>Publish over SSH”设置要发布的linux服务器的登录信息,各项配置与具体含义如下图所示。配置完成后,点击【Test Configuration】按钮可测试是否连接上,如显示“Success”则表示配置成功。

编写部署ssh脚本

将以下shell脚本deploy.sh存放在服务器的/home/admin/data目录下并给予执行权限chomd +x deploy.sh,即上图ssh登录配置图中的Remote Directory目录下。这样配置表示jenkins登录到tomcat所在的linux服务器后可用./deploy.sh执行部署操作。如果demploy.sh放在其它目录,则用绝对路径/..dir../..dir../deploy.sh来执行即可。

#!/bin/bash
# 文件:set ff=unix
#defined
export JAVA_HOME=/usr/local/java
# tomcat部署位置
TOMCAT_HOME="/home/admin/data/tomcat-jenkins"
# 登录后的服务器用户目录,与上图配置的Remote Directory设置相同
LOGIN_HOME="/home/admin/data"
TOMCAT_PORT=10092
PROJECT="$1"
#param validate
if [ $# -lt 1 ]; then
  echo "you must use like this : ./deploy.sh <projectname> [tomcat port] [tomcat home dir]"
  exit
fi
if [ "$2" != "" ]; then
   TOMCAT_PORT=$2
fi
if [ "$3" != "" ]; then
   TOMCAT_HOME="$3"
fi
#shutdown tomcat
#"$TOMCAT_HOME"/bin/shutdown.sh
#echo "tomcat shutdown"
#check tomcat process

#tomcat_pid=`/usr/sbin/lsof -n -P -t -i :$TOMCAT_PORT`
tomcat_pid=`ps -ef | grep $TOMCAT_HOME | grep -v 'grep\|tail\|more\|bash\|less'| awk '{print $2}'`
echo "current :" $tomcat_pid
while [ -n "$tomcat_pid" ]
do
 sleep 5
 tomcat_pid=`ps -ef | grep $TOMCAT_HOME | grep -v 'grep\|tail\|more\|bash\|less'| awk '{print $2}'`
 echo "scan tomcat pid :" $tomcat_pid
 if [ -n "$tomcat_pid" ]; then
   echo "kill tomcat :" $tomcat_pid
   kill -9 $tomcat_pid
 fi
done
#publish project
echo "scan no tomcat pid,$PROJECT publishing"
rm -rf "$TOMCAT_HOME"/webapps/$PROJECT
cp "$LOGIN_HOME"/war/$PROJECT.war "$TOMCAT_HOME"/webapps/$PROJECT.war
#bak project
#BAK_DIR=/home/web_as/war/bak/$PROJECT/`date +%Y%m%d`
#mkdir -p "$BAK_DIR"
#cp "$TOMCAT_HOME"/webapps/$PROJECT.war "$BAK_DIR"/"$PROJECT"_`date +%H%M%S`.war
#remove tmp
rm -rf "$LOGIN_HOME"/war/$PROJECT.war
#start tomcat
"$TOMCAT_HOME"/bin/startup.sh
echo "tomcat is starting,please try to access $PROJECT conslone url"

项目构建配置

参照下图保存配置后,即可构建maven项目,jenkins会复制编译后的war项目到192.168.1.12服务器对应的tomcat路径下,然后启动Tomcat部署项目。

到此这篇关于docker搭建jenkins+maven代码构建部署平台的文章就介绍到这了,更多相关docker搭建jenkins+maven内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用Docker+Jenkins自动构建部署

    本文介绍了Docker+Jenkins自动构建部署,分享给大家,具体如下: 环境 阿里云ESC,宿主机服务器安装Docker,在安全规则中确认8080端口开启. 客户端mac 运行jenkins 运行jenkins容器 在主机上创建目录,并添加读写权限以便jenkins应用运行时读写文件,如: $ mkdir -p /var/jenkins_node $ chmod 777 /var/jenkins_node 拉取jenkins镜像:docker pull jenkins,当前是2.60.3版.

  • 如何基于Jenkins构建Docker镜像

    这篇文章主要介绍了基于Jenkins构建Docker镜像,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 前提意义: SpringCloud微服务里包含多个文件夹,拉取仓库的所有代码,然后过根据选项参数使用maven编译打包指定目录的jar,然后再根据这个目录的Dockerfile文件制作Docker镜像 1. SpringCloud项目结构 注意Dockerfile文件的位置,跟src和pom.xml同级,后面会用到这个文件,若不同级,后面选择

  • 详解Docker下搭建Jenkins构建环境

    首先需要搭建好docker环境的linux系统,这个教程多如牛毛,在此不再赘述. 然后编写一个dockerfile来生成一个镜像,dockerfile其实就是一系列命令的集合,有点像windows的批处理文件, 搭建Jenkins构建环境需要安装jdk.maven.tomcat.jenkins,另外还安装了GIT,用来构建GIT来源的代码,内容如下: FROM centos:7 # author info MAINTAINER xulijian 514045152@qq.com # instal

  • Docker环境搭建Jenkins在构建任务时控制台日志出现中文乱码的问题

    一.问题描述: 在Linux环境Centos操作系统下,通过Docker下载Jenkins镜像后创建了容器,并且通过服务器IP+端口访问Jenkins地址,进行相关的配置,然后创建任务job来构建跑java+selenium自动化测试脚本,目前构建Success,唯一不足之处是打印的日志出现就了乱码,如下图: (备注:执行机就是jenkins本身,同一台机器) 二.排查Jenkins设置 Jenkins系统设置查看全局属性中语言部分 2.Jenkins详细信息(浏览器Jenkins地址后面加上/

  • jenkins构建Docker 镜像实例详解

     jenkins构建Docker 镜像实例详解 前言:jenkins有Docker镜像,而之前我们说过使用jenkins打包Docker镜像,那么可否用jenkins的Docker镜像打包Docker镜像呢? 环境: CentOS 7     Docker 1.10.3 1.本机安装docker环境,并配置TCP访问接口 # vi /usr/lib/systemd/system/docker.service 修改ExecStart为: ExecStart=/usr/bin/docker daem

  • Docker Gitlab+Jenkins+Harbor构建持久化平台操作

    CI/CD概述 CI工作流程设计 Git 代码版本管理系统 只能命令行去管理git Gitlab 基于git做了图形管理页面,企业使用gitlab做私有的代码管理仓库 Github 公共代码管理仓库 搭建gitlab 搭建gitlab先创建工作目录,因为有些数据需要持久化 [root@www ~]# mkdir -p /gitlab [root@www ~]# cd /gitlab/ docker run -d \ --name gitlab \ -p 8443:443 \ -p 9999:80

  • docker搭建jenkins+maven代码构建部署平台

    目录 Docker基本概念 Docker安装过程(Centos6.9) 升级内核 安装docker-io 基于Docker的jenkins安装 拉取应用 运行容器 跟踪应用log 关闭打开容器 tomcat账户配置 配置jenkins,构建部署war应用 配置JDK.Maven等参数 新建任务构建部署 通过ssh脚本部署maven项目到指定Tomcat中 配置Publish Over SSH插件 编写部署ssh脚本 项目构建配置 由于项目开发,经常需要在本地搭一些环境进行开发或测试,大家知道搭环

  • Docker搭建Jenkins并自动化打包部署项目的步骤

    Jenkins的安装及配置 Docker环境下的安装 下载Jenkins的Docker镜像: docker pull jenkins/jenkins:lts 在Docker容器中运行Jenkins: docker run -p 8080:8080 -p 50000:5000 --name jenkins \ -u root \ -v /mydata/jenkins_home:/var/jenkins_home \ -d jenkins/jenkins:lts 直接通过虚拟机ip+端口访问jks,

  • jenkins+maven+svn自动部署和发布的详细图文教程

    Jenkins Jenkins是一个开源的.可扩展的持续集成.交付.部署的基于web界面的平台.允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成. 通常我们使用Jenkins主要实现以下功能: 持续集成指的是,频繁地(一天多次)将代码集成到主干.将软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误. 持续交付指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审.如果评审通过,代码就进入生产阶段. 正文开始 博主前几个月刚被忽悠到一

  • Jenkins+Maven+SVN自动化部署java项目

    安装Jenkins 提示:首先Jenkins安装方式有2中,一种是yum安装,另一种是使用war的方式进行安装(war就需要安装tomcat) 官方文档:https://pkg.jenkins.io/redhat/ 如果我们想使用war包的方式可以直接下载war包 Jenkins访问地址:localhost:8080/jenkins 新版本的jenkins为了保证安全,在安装之后有一个锁,需要设置密码之后才可以解锁 我们选择推荐安装即可 安装插件中 设置管理员账号密码 登陆jenkins 安装m

  • 使用docker搭建jenkins自动化工具的实现

    目录 一.jenkins 二.基于docker 搭建 jenkins 三.jenkins 自动发布 SpringBoot 镜像 一.jenkins Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成. 大家在工作中,应该都有使用过jenkins 自动化打包或发布,就比如我经常用到的就是将开发的项目自动化打包成docker镜像,实现一键打包,大大减少了我们的工作量,下面就一起学习下,jenkin

  • Linux环境下使用Docker搭建Jenkins容器的方法步骤

    目录 需要提前准备的条件 Step1:安装Jenkins镜像 Step2:docker启动Jenkins容器 Step3:访问Jenkins Step4:安装Jenkins插件 需要提前准备的条件 Maven环境 Docker环境 JDK环境(Centos8 自带JDK环境去除,重装的JDK) Step1:安装Jenkins镜像 用docker查询jenkins镜像 docker search jenkins 我们选择下载第二个,jenkins/jenkins,下载命令 docker pull

  • docker搭建jenkins服务的示例

    拉取镜像 root@EricZhou-MateBookProX: docker pull jenkins/jenkins:lts lts: Pulling from jenkins/jenkins 3192219afd04: Pull complete 17c160265e75: Pull complete cc4fe40d0e61: Pull complete 9d647f502a07: Extracting [===================================> ] 35

  • 在CentOS7上搭建Jenkins+Maven+Git持续集成环境的方法

    本文以部署 Spring boot + Maven 项目为例,使用码云作为代码托管仓库,在 CentOS 7 上搭建 Jenkins 持续集成环境. 1. 准备工作 1.1 安装 Java 环境 Jenkins 是基于 Java 开发的持续集成工具,需要在 Java 环境下运行.用下面命令查看系统是否已安装 Java: yum list installed | grep jdk 如果没有,使用 yum search 命令查找 openjdk 版本,选择合适的 jdk 进行安装: yum sear

  • Docker搭建代码检测平台SonarQube并检测maven项目的流程

    1 前言 良好的代码习惯是一个优秀程序员应该具备的品质,但靠人的习惯与记忆来保证代码质量,始终不是一件靠谱的事.在计算机行业应该深知,只要是人为的,都会有操作风险.本文讲解如何通过Docker搭建代码检测平台SonarQube,并使用它来检测maven项目的代码. 2 Docker安装SonarQube 2.1 安装 通过Docker安装,方便快捷,不需要时直接删掉容器和镜像就好了. # 拉取Sonar镜像 docker pull sonarqube:8.3.1-community # 运行实例

随机推荐