一、创建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项目持续集成、持续部署的更多相关文章

  1. Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目

    Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目 Spring Tool Suite 是一个带有全套的Spring相关支持功能的Eclipse插件包. ...

  2. Docker学习笔记之--.Net Core应用容器通过网桥连接Redis容器(环境:centos7)

    上节演示通过应用容器连接sql server容器,连接:Docker学习笔记之--.Net Core项目容器连接mssql容器(环境:centos7) 本节演示安装 redis容器,通过网桥连接 先决 ...

  3. Docker学习笔记之docker volume 容器卷的那些事(一)

    预览目录 volume 方式 相关用例 使用方式 使用 volume driver bind mount 方式 相关用例 使用方式 配置selinux标签 配置macOS的安装一致性 tmpfs 方式 ...

  4. Docker学习笔记之运行和管理容器

    0x00 概述 容器是基于容器技术所建立和运行的轻量级应用运行环境,它是 Docker 封装和管理应用程序或微服务的“集装箱”.在 Docker 中,容器算是最核心的部分了,掌握容器的操作也是 Doc ...

  5. DOCKER 学习笔记4 认识DockerCompose 多容器编排

    前言 通过上一节的学习,学会了如何在Linux 环境下搭建Docker并且部署Springboot 项目,并且成功的跑了起来,当然,在生产环境中,不只是需要一个后端的Web 项目,还需要比如 Ngin ...

  6. DOCKER 学习笔记5 Springboot+nginx+mysql 容器编排

    前言 在上节的内容中,我们已经通过一个简单的实例,将Docker-compose 进行了实际的应用.这一小节中.我们将通过学习和了解,着重认识容器的编排,上一节只算是一个小小的测试.在这一节中.我们将 ...

  7. Docker学习笔记四 Docker容器

    本文地址:https://www.cnblogs.com/veinyin/p/10439849.html    容器是独立运行的一个或一组应用及他们的运行态环境,对应虚拟机的操作系统和应用. 启动 可 ...

  8. Docker学习笔记(2)-docker镜像操作

    本节将会涉及Docker的镜像操作. 1. 获取镜像 如何获取Docker Hub上的镜像?可通过docker pull命令获取,其格式为: docker pull [选项] [Docker Regi ...

  9. Docker学习笔记2: Docker 概述

    一.什么是Docker Docker是基于Go语言实现的云开源项目. Docker 的主要目标是:"Bulid,Ship and  Run Any App ,AnyWhere" , ...

随机推荐

  1. .NET Core单元测试之搞死开发的覆盖率统计(coverlet + ReportGenerator )

    .NET Core单元测试之搞死开发的覆盖率统计 这两天在给项目补单元测试,dalao们要求要看一下测试覆盖率 翻了一波官方test命令覆盖率倒是有支持了,然而某个更新日志里面写着 ["Su ...

  2. idea 从javadoc中复制内容出来

    打开 tool window就行了 经验:百度google不到的东西太多了,要学会自己想办法,至少也要把功能都试一遍吧, 而且像这种东西官方一般会给方法实现你的目的,只不过有时候是把功能迁移了或者整合 ...

  3. iOS 关于权限设置的问题

      在info.plist文件下添加 <key>NSContactsUsageDescription</key>    <string>请求访问通讯录</st ...

  4. 《算法图解》——第十章 K最近邻算法

    第十章    K最近邻算法 1 K最近邻(k-nearest neighbours,KNN)——水果分类 2 创建推荐系统 利用相似的用户相距较近,但如何确定两位用户的相似程度呢? ①特征抽取 对水果 ...

  5. Elasticsearch.Net 异常:[match] query doesn't support multiple fields, found [field] and [query]

    用Elasticsearch.Net检索数据,报异常: )); ElasticLowLevelClient client = new ElasticLowLevelClient(settings); ...

  6. Hyperledger Fabric 1.0 从零开始(十三)——orderer分布式方案

    简述 在搭建HyperLedger Fabric环境的过程中,我们会用到一个configtx.yaml文件(可参考Hyperledger Fabric 1.0 从零开始(八)——Fabric多节点集群 ...

  7. Paper Reading - Deep Captioning with Multimodal Recurrent Neural Networks ( m-RNN ) ( ICLR 2015 ) ★

    Link of the Paper: https://arxiv.org/pdf/1412.6632.pdf Main Points: The authors propose a multimodal ...

  8. HTML5+Bootstrap 学习笔记 4

    HTML5 <map> <area> 标签 <map> 标签定义客户端的图像映射.图像映射是带有可点击区域的图像. <area> 标签定义图像映射内部的 ...

  9. 根据Unicode码生成汉字

    最近需要一批汉字字符数据,类似数字字符与ASCII码之间的对应关系,汉字字符与Unicode码之间也存在对应关系. 所以可以遍历Unicode码批量生成汉字. 其中,汉字为宽字符,输出时候注意需要修改 ...

  10. 六周psp

    本周psp 本周进度条 代码累积折线图 博文字数累积折线图 饼状图