一、创建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. AngularJS中Directive指令系列

    近段时间在研究Angular中的directive用法,打算写个系列.以官方文档为主.并参考诸多教程.加上自己的思考. 基本概念及用法 scope属性的使用.  &, <, =, @ 符 ...

  2. mac php版本切换

    mac os 中自带php版本,但是很多扩展是不带的. 这个网站: http://php-osx.liip.ch/提供了几乎所有的php版本 通过输入 curl -s http://php-osx.l ...

  3. golang 单元测试

    单元测试是质量保证十分重要的一环,好的单元测试不仅能及时地发现问题,更能够方便地调试,提高生产效率.所以很多人认为写单元测试是需要额外的时间,会降低生产效率,是对单元测试最大的偏见和误解. go 语言 ...

  4. JS基础,课堂作业,成绩练习

    成绩练习 <script> var name = prompt("请输入学生姓名:"); var degree = parseInt(prompt("请输入学 ...

  5. c# IE浏览器清除缓存没用

    再想买更新JS和css文件之后, 使用 internet 里面的删除选项 发现样式和事件还是没用变 最终发现 需要 按 f12 找到这个清缓存才正常解决问题

  6. Windows操作系统C盘占用空间过多

    Windows操作系统C盘占用空间过多 大部分的windows电脑用户在长时间使用PC时都会遇到一个问题,就是C盘占用的空间会越来越多,乃至占满整个C盘. 后来在百度了一波,发现各种方法都试过了,也不 ...

  7. docker应用容器化准则—12 factor

    在云的时代,越来越多的传统应用需要迁移到云环境下,新应用也要求能适应云的架构设计和开发模式.而12-factor提供了一套标准的云原生应用开发的最佳原则. 在容器云项目中应用容器化主要参考12-Fac ...

  8. javascript中的取反再取反~~

    操作符~, 是按位取反的意思,表面上~~(取反再取反)没有意义,实际上在JS中可以将浮点数变成整数. <html> <script> var myArray = new Arr ...

  9. python 二维矩阵及转byte知识点

    1.注意python中的数组和list形式混合: 数组在numpy里面: 2.二维数组这样定义可以修改固定位置的值: rawDataArray_temp = [([0]*nIRImageWidth)f ...

  10. 寒假作业2:简化电梯设计elevator

    Github仓库地址:hua-kui 寒假学习计划:学习计划 - 题目背景 一栋10层的大楼(楼层编号1-10),设有一台无限载重的电梯,初始时电梯停在1层.电梯移动1层的耗时为1,在某一层停靠的耗时 ...