Docker学习笔记五:Docker生成jenkins容器,支持Java Web项目持续集成、持续部署
一、创建jenkins容器:
1.拉取jeknin镜像
sudo docker pull jenkins
2.创建一个jenkins目录
sudo mkdir /jenkins
3.在jenkins目录下创建一个Dockerfile
sudo touch Dockerfile
4.为了在jenkins容器中具有执行sudo命令的权限,在Dockerfile添加如下内容:
FROM jenkins
USER root
RUN apt-get update && apt-get install -y sudo && rm -rf /var/lib/apt/lists/*
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
USER jenkins
5.创建新的jenkins镜像
sudo docker build -t zss/jenkins:1.0 .
6.创建jenkins容器
sudo docker run -p 8080:8080 --name jenkins
-v /usr/bin/docker:/usr/bin/docker
-v /var/run/docker.sock:/var/run/docker.sock //将宿主机中docker挂载到jenkins容器中,以便在jenkins容器中执行docker命令
-v /usr/jdk/jdk1.7.0_25:/usr/java/jdk1.7.0_25 //将宿主机中jdk挂载到jenkins容器中
-v /usr/tomcat/apache-tomcat-7.0.29:/usr/tomcat/apache-tomcat-7.0.29 //将宿主机中tomcat挂载到jenkins容器中
-v /usr/maven/apache-maven-3.3.9:/usr/maven/apache-maven-3.3.9 //将宿主机中tomcat挂载到jenkins容器中
zss/jenkins:1.0
7.在浏览器中输入http://localhost:8080,填写启动jenkins时出现的密码
二、配置jenkins:
1.安装svn、maven插件

2.在jenkins中配置jdk、maven如图:

三、配置Java web项目:
1.创建一个maven风格的test项目

2.配置test


四、书写Shell脚本来构建Java Web镜像和容器:
1.在Post Steps目录中选择

填写如下Shell脚本
#!/bin/bash
imageId=`sudo docker images|grep -i test|awk '{print $3}'`
echo "Test镜像ID = "$imageId
containId=`sudo docker ps -a |grep -i test|awk '{print $1}'`
echo "Test容器ID = "$containId
project=/var/jenkins_home/workspace/test/src/main/resources/docker
#判断是否存在旧的Test镜像
if test -z "$imageId"
then
echo "Test镜像不存在"
else
if test -z "$containId"
then
echo "Test容器不存在"
else
echo "Test容器将要被执行stop命令"
sudo docker stop test
echo "Test容器处于stop状态"
fi
echo "旧Test镜像将要被删除"
sudo docker rmi -f $imageId
echo "成功删除旧Test镜像"
fi
#Dockerfile所在目录
sudo mv $project/Dockerfile /usr
#切换目录至usr
cd /usr
#将Tms war包拷贝到Dockerfile所在目录下
sudo mv /var/jenkins_home/workspace/test/target/test.war .
echo "Test镜像构建中:------->"
#构建Tms镜像
sudo docker build -t test .
#判断是否存在旧的Tms容器
if test -z "$containId"
then
echo "Test容器不存在"
else
echo "旧Test容器将要被删除"
sudo docker rm -f $containId
echo "成功删除旧Test容器"
fi
#创建容器
echo "开始创建新Test容器"
sudo docker run -d -p 8088:8080 -v /usr/logs:/usr/tomcat/logs --name test test
echo "新Test容器创建成功"
2.点击立即保存,立即构建

Docker学习笔记五:Docker生成jenkins容器,支持Java Web项目持续集成、持续部署的更多相关文章
- Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目
Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目 Spring Tool Suite 是一个带有全套的Spring相关支持功能的Eclipse插件包. ...
- Docker学习笔记之--.Net Core应用容器通过网桥连接Redis容器(环境:centos7)
上节演示通过应用容器连接sql server容器,连接:Docker学习笔记之--.Net Core项目容器连接mssql容器(环境:centos7) 本节演示安装 redis容器,通过网桥连接 先决 ...
- Docker学习笔记之docker volume 容器卷的那些事(一)
预览目录 volume 方式 相关用例 使用方式 使用 volume driver bind mount 方式 相关用例 使用方式 配置selinux标签 配置macOS的安装一致性 tmpfs 方式 ...
- Docker学习笔记之运行和管理容器
0x00 概述 容器是基于容器技术所建立和运行的轻量级应用运行环境,它是 Docker 封装和管理应用程序或微服务的“集装箱”.在 Docker 中,容器算是最核心的部分了,掌握容器的操作也是 Doc ...
- DOCKER 学习笔记4 认识DockerCompose 多容器编排
前言 通过上一节的学习,学会了如何在Linux 环境下搭建Docker并且部署Springboot 项目,并且成功的跑了起来,当然,在生产环境中,不只是需要一个后端的Web 项目,还需要比如 Ngin ...
- DOCKER 学习笔记5 Springboot+nginx+mysql 容器编排
前言 在上节的内容中,我们已经通过一个简单的实例,将Docker-compose 进行了实际的应用.这一小节中.我们将通过学习和了解,着重认识容器的编排,上一节只算是一个小小的测试.在这一节中.我们将 ...
- Docker学习笔记四 Docker容器
本文地址:https://www.cnblogs.com/veinyin/p/10439849.html 容器是独立运行的一个或一组应用及他们的运行态环境,对应虚拟机的操作系统和应用. 启动 可 ...
- Docker学习笔记(2)-docker镜像操作
本节将会涉及Docker的镜像操作. 1. 获取镜像 如何获取Docker Hub上的镜像?可通过docker pull命令获取,其格式为: docker pull [选项] [Docker Regi ...
- Docker学习笔记2: Docker 概述
一.什么是Docker Docker是基于Go语言实现的云开源项目. Docker 的主要目标是:"Bulid,Ship and Run Any App ,AnyWhere" , ...
随机推荐
- angularJS ng-repeat中的directive 动态加载template
有个需求,想实现一个html组件,传入不同的typeId,渲染出不同的表单元素. <div ng-repeat="field in vm.data"> <magi ...
- Linux 的字符串截取
假设有变量 var=http://www.aaa.com/123.htm 1. # 号截取,删除左边字符,保留右边字符. echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// ...
- 二、利用EnterpriseFrameWork快速开发Web系统(B/S)
EnterpriseFrameWork框架实例源代码下载: 实例下载 本章通过一个开发实例来讲解Web系统的开发经过,以及会碰到的一些问题.实例功能就是业务系统中最常见的增.删.改.查来演示,用一个界 ...
- smartgit 过期
进入到安装目录把Setting.xml 文件删除然后,再次打开就可以正常使用了.
- Hackerank-Array-NewYearChaos
题目背景描述 新年第一天,N 个人排队坐过山车.每个人穿有带编号的衣服 \([1, 2, 3, ...]\). 因为排队时间太久,有人发现给前面相邻的人喂一颗糖,就可以和他交换位置,而每人手里只有两颗 ...
- 回归Qt——写在Qt5.10发布之日
今天偶然看到一条关于Qt5.10发布的消息,发现Qt经历了诺基亚风波之后发展得依然良好,感到很欣慰.回头看上次关注Qt技术还是2011年,那时候用Qt4.7做一个小项目,对于一个写Win32界面和MF ...
- Python20-Day01
简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释 编译型语言是一种以编译器来实现的编程语言,优缺点:执行速度快,调试麻烦 编译型语言:Java,Go,C,C++ 解释性 ...
- ES6的新特性(6)——正则的扩展
正则的扩展 RegExp 构造函数 在 ES5 中,RegExp构造函数的参数有两种情况. 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag). var regex = ne ...
- RIGHT-BICEP测试第二次程序
根据Right-BICEP单元测试的方法我对我写的第二次程序进行了测试: 测试一:测试能否控制使用乘除 测试二:测试是否能加括号 测试三:是否可以控制题目输出数量 测试四:能否控制输出方式,选择文件输 ...
- Rsyslog初步学习
一.Rsyslog整体架构 Rsyslog消息流:输入模块——>预处理模块——>主队列——>过滤模块——>执行队列——>输出模块 1. 输入模块 输入模块是消息来源 2. ...