一、大概流程

因为目前没有找Jenkins 和docker 之间比较友好的插件,所以只能使用这种比较low 的方式来实现自动部署了。

1、Jenkins在gitlab拉取项目并编译。

2、将编译后的代码及dockfile脚本传递到部署服务器

3、通过构建后操作,生成镜像,并启动容器

二、Jenkins配置

1、创建项目及填写相关项目信息,以及源码管理选择git这些就不说了,之前的文章都写过了,有兴趣的朋友可以去看下

2、选择构建

3、构建后操作,选择 Send build  artifacts over SSH

4、脚本详情

imagesid=`docker images|grep -i docker-test|awk '{print $3}'`
project=/testdockfile/
dockerid=`docker ps -a|grep -i docker-test|awk '{print $1}' `
echo $project
if [ ! -n "$imagesid" ];then
echo $imagesid "is null"
else
docker rmi $imagesid -f
fi
cd $project docker build -t docker-test . if [ -n "$dockerid" ] ;then
docker stop $dockerid
docker rm -f $dockerid
else
echo 'dockerid is null'
fi
docker run -it -d -p 8080:8080 -t "docker-test"

这个脚本主要是为了检测容器和镜像是否存在,滚动更新。

5、项目目录下所携带的dockerfile文件

这里的form就是引用了基础镜像的名称,基础镜像里包含jdk和tomcat环境

FROM java8
ADD ./target/raymedy.war /root/apache-tomcat-7.0.92/webapps
EXPOSE 8080
CMD /root/apache-tomcat-7.0.92/bin/catalina.sh run

我这里放在了项目的根目录下

三、部署机器操作

为了部署的时候更为方便快捷,所以提前准备一个基础镜像并测试,看是否可以正常访问到tomcat的8080端口,当然其他端口也可以

基础镜像

#基本镜像
FROM centos   
#把你上传的jdk放到docker容器里面的root目录下
ADD jdk-8u65-linux-x64.tar.gz /root
#把你上传的Tomcat放到docker容器里面的root目录下
ADD apache-tomcat-7.0.92.tar.gz /root
#设置环境变量a
ENV JAVA_HOME /root/jdk1.8.0_65
#设置环境变量
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  
#设置环境变量
ENV CATALINA_HOME /root/apache-tomcat-7.0.92
#设置环境变量
ENV CATALINA_BASE /root/apache-tomcat-7.0.92
#设置环境变量
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#运行tomcat
CMD /root/apache-tomcat-7.0.92/bin/catalina.sh run

然后build这个dockfile

docker build -t java8 .

四、开始构建

相关输出

SSH: EXEC: STDOUT/STDERR from command [imagesid=`docker images|grep -i docker-test|awk '{print $3}'`
project=/testdockfile/
dockerid=`docker ps -a|grep -i docker-test|awk '{print $1}' `
echo $project
if [ ! -n "$imagesid" ];then
echo $imagesid "is null"
else
docker rmi $imagesid -f
fi
cd $project docker build -t docker-test . if [ -n "$dockerid" ] ;then
docker stop $dockerid
docker rm -f $dockerid
else
echo 'dockerid is null'
fi
docker run -it -d -p 8080:8080 -t "docker-test"] ...
/testdockfile/
Error response from daemon: conflict: unable to delete faf5096ab572 (cannot be forced) - image is being used by running container c9c7727b0212
Sending build context to Docker daemon 45.61 MB Step 1/4 : FROM java8
---> 881d2729a9d1
Step 2/4 : ADD ./target/raymedy.war /root/apache-tomcat-7.0.92/webapps
---> 3324b015bcdf
Removing intermediate container 8a9af289e52d
Step 3/4 : EXPOSE 8080
---> Running in 57e77b95c298
---> 568119a5968f
Removing intermediate container 57e77b95c298
Step 4/4 : CMD /root/apache-tomcat-7.0.92/bin/catalina.sh run
---> Running in e1aae5fae303
---> 116133c44832
Removing intermediate container e1aae5fae303
Successfully built 116133c44832
c9c7727b0212
c9c7727b0212
88a142f5f877400b8277bed0aec3a049c918b98e66b89c08c93fd018686e9757
SSH: EXEC: completed after 3,803 ms
SSH: Disconnecting configuration [192.168.10.110] ...
SSH: Transferred 2 file(s)
Finished: SUCCESS

查看docker镜像及容器运行情况

查看端口

最终页面

小节:应该更为方便的是能自动生成dockfile 文件,然后通过Jenkins 上传到镜像仓库,镜像仓库设置动作是否更新所有容器。

Jenkins (自动使用docker容器发布java.war +tomcat)的更多相关文章

  1. 使用jenkins自动构建docker容器范例

    1.登录Jenkins,新建一个自由风格的软件项目. 2.源码管理选择git,并添加Repository URL.Credentials 3.构建选择 Execute Shell,命令如下: dock ...

  2. 使用Jenkins来构建Docker容器

    使用Jenkins来构建Docker容器(Ubuntu 14.04) 当开发更新了代码,提交到Gitlab上,然后由测试人员触发Jenkins,于是一个应用的新版本就被构建了.听起来貌似很简单,dua ...

  3. 如何设置Docker容器中Java应用的内存限制

    如果使用官方的Java镜像,或者基于Java镜像构建的Docker镜像,都可以通过传递 JAVA_OPTS 环境变量来轻松地设置JVM的内存参数.比如,对于官方Tomcat 镜像,我们可以执行下面命令 ...

  4. docker容器运行java后台程序,存到数据库的时间差一天的问题

    主要原因是docker容器中的时间用的是标准时间,不是用的宿主机的时间. 修改方法: docker run -e TZ="Asia/Shanghai" -d -p 80:80 -- ...

  5. 从零开始使用Jenkins来构建Docker容器(Ubuntu 14.04)

    当开发更新了代码,提交到Gitlab上,然后由测试人员触发Jenkins,于是一个应用的新版本就被构建了.听起来貌似很简单,duang~duang~duang,我用了是这样,你们用了也是这样,看起来这 ...

  6. Docker容器发布spring boot项目

    一.安装Docker环境 yum install docker 安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动: systemctl start docker.servic ...

  7. Gitlab+Jenkins学习之路(十一)之Jenkins自动触发构建和发布

    思路图: 一.下载gitlab plugin jenkins-->系统管理-->管理插件-->下载并安装gitlab plugin 二.配置gitlab认证 路径:Jenkins-- ...

  8. 局域网内利用gitlab,jenkins自动生成gitbook并发布(nginx)

    安装了GitBook,内网使用,没法用上gitbook的网页. 用gitbook serve只能展示一本书,而且也不利于长期维护. 于是使用gitlab,jenkins,和nginx配合gitbook ...

  9. docker容器内 java应用程序启动慢

    原谅我对JVM 不是很熟悉. 参考http://hongjiang.info/tomcat-startup-slowly-in-docker/ 感谢作者.

随机推荐

  1. LVS、Nginx和HAProxy区别

    LVS.Nginx和HAProxy区别 LVS 优点: 高并发连接:LVS基于内核网络层面工作,有超强的承载能力和并发处理能力.单台LVS负载均衡器,可支持上万并发连接. 抗负载能力强:是工作在网络4 ...

  2. MySQL查询区分大小写敏感问题

    由于mysql是不区分大小写的,所以当你查询的时候,例如数据库里有条数据用户名为UpYou(用户名唯一),当你输入:upyou时发现也可以查询,在某些需求下这样是不允许的,可以在查询语句中加入bina ...

  3. 牛客剑指Offer-数字在升序数组中出现的次数

    题目 统计一个数字在升序数组中出现的次数. 示例1 输入 [1,2,3,3,3,3,4,5],3 返回值 4 题解 第一种最简单的方法是O(n)复杂度.遍历数组统计结果. public int Get ...

  4. TCP/IP五层模型-传输层-UDP协议

    ​1.定义:UDP:是非面向连接.不可靠的用户数据包协议. 2.应用场景:适合对数据完整性要求不高,但对延迟很敏感,比如即时通信(语音视频聊天等). 3.UDP报文格式: 4.用UDP传输数据的应用层 ...

  5. Kubernetes学习笔记之安装minikube并运行个简单应用程序

    前言:本笔记仅记录学习记录,可能存在错误!!!使用的环境是Ubuntu Desktop 20.04,也有用Windows 10 操作的,根据的文档是minikube的文档教程,链接:https://m ...

  6. GitHub README.md文本编写指南

    标题 在文字前写#,注意文字与#之间有一个空格 # 一级标题## 二级标题### 三级标题 以此类推或者用连续的减号或等号写在文字之下: 标题- 粗体斜体 **这个是粗体*这个是斜体****这个是粗体 ...

  7. Java 基于mail.jar 和 activation.jar 封装的邮件发送工具类

    准备工作 发送邮件需要获得协议和支持! 开启服务 POP3/SMTP 服务 如何开启 POP3/SMTP 服务:https://www.cnblogs.com/pojo/p/14276637.html ...

  8. Session、Cookie与Token

    http协议是无状态协议 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到 ...

  9. 入门OJ:八中生成树2

    题目描述 八中里面有N个建设物,M条边.对于这种要建最小生成树的问题,你应该很熟练了.现在老大决定降低某条边的费用,然后这条边必须要被选中,因为这条路他每天都要走,自然......问选了这条边后是否可 ...

  10. [Ceoi2004]Journey

    题目描述 给出N个点,及你的出发点K. 接下来N-1行描述有关边的开始点,结束点,边长.保证图中不会有环 接下来给出数字J,代表你要走多少个点. 接下来J个数字,代表你要走过的点的编号.当然你可以自己 ...