zoukankan      html  css  js  c++  java
  • Jenkins (自动使用docker容器发布java.war +tomcat)

    一、大概流程

    因为目前没有找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 上传到镜像仓库,镜像仓库设置动作是否更新所有容器。

  • 相关阅读:
    Java里if...else语句
    Java里for循环和增强版循环;break语句:跳出循环;continue:跳转循环
    Java里while循环和do...while循环
    static 修饰符
    Java类变量(静态变量)
    Java实例变量
    Java局部变量
    Java访问实例变量和调用成员方法
    Java里import语句使用
    声明式服务调用
  • 原文地址:https://www.cnblogs.com/mjiu/p/10288726.html
Copyright © 2011-2022 走看看