• 利用jenkins直接构件docker镜像并发布到docker服务器


    0.jenkins首先创建远程ssh账号 ,分别向两台docker服务器去部署

    1.创建一个maven任务

     2.创建构件需要的环境变量

     var_project_name  是项目名称,包括后面构建的镜像名称也用这个

    var_app_docker_path 是利用docker部署用的基础目录,请分别先在两台docker机器上创建这个文件夹

    3.配置你的源代码拉取地址

    4.配置你的maven构件参数

     zkui-master/pom.xml 这个就是你们git上主pom文件的路径

    5.添加 Send files or execute commands over SSH 配置 两台机器就配置2个

     第1个Transfers配置,主要用来删除历史项目临时目录

    #!/bin/bash
    #进入根目录
    cd /${var_app_docker_path}
    #删除临时目录
    rm -rf ${var_project_name}
    #创建临时目录
    mkdir ${var_project_name}
    #进入临时目录
    cd ${var_project_name}
    

      

     第2个Transfers配置,主要用来复制镜像文件

     这个地址就是jenkins服务器maven打包的地址

    ${var_project_name}/docker/Dockerfile
    ${var_project_name}/docker/
    /${var_app_docker_path}/${var_project_name}
    

      

    由于我的Dockerfile文件也是在git代码上

    FROM 192.168.88.85:5000/jdk8:v1
    MAINTAINER Miguel Garcia Puyol <miguelpuyol@gmail.com>
    RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone
    WORKDIR /var/app
    #ADD zkui-*.jar /var/app/zkui.jar
    ADD zkui-2.0-SNAPSHOT-jar-with-dependencies.jar /var/app/zkui.jar
    #开放8000端口
    EXPOSE 9091
    #配置容器启动后执行的命令
    ENTRYPOINT ["java","-jar","/var/app/zkui.jar"]

     第3个Transfers配置,主要用来复制打包文件

     jenkins 打包地址

    ${var_project_name}/target/*.jar
    ${var_project_name}/target/
    /${var_app_docker_path}/${var_project_name}
    

      

     第4个Transfers配置,主要来关闭已经运行的镜像,删除历史镜像,重新打包镜像,执行镜像

    #!/bin/bash
    echo "↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓开始↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓"
    #获得变量
    var_images_id=`docker images|grep -i ${var_project_name}|awk '{print $3}'`
    var_ps_id=`docker ps -a|grep -i ${var_project_name}|awk '{print $1}'`
    echo "${var_project_name}docker images ID:${var_images_id}"
    echo "${var_project_name}docker ps ID:${var_ps_id}"
    #结束镜像任务
    if [ -n "$var_ps_id" ]; then
       docker rm -f ${var_ps_id}
       echo "结束镜像:${var_project_name},ID:${var_images_id}"
    fi
    #删除历史镜像
    if [ -n "$var_images_id" ]; then
        docker rmi -f ${var_images_id}
        echo "删除镜像:${var_project_name} ID:${var_images_id}"
    fi
    #进入临时文件
    cd /${var_app_docker_path}/${var_project_name}
    echo "当前目录:$(cd "$(dirname "$0")";pwd)"
    #开始构件镜像
    docker build -t ${var_project_name} .
    #执行镜像 ,如果需要外部中心注册,需要增加--net参数,主机模式对外暴露IP docker run -it -d -p 9091:9091 --net=host --name ${var_project_name} ${var_project_name}
    docker run -it -d -p 9091:9091 --name ${var_project_name} ${var_project_name}
    echo "↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑结束↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
    

    6.配置好以后保存就可以部署服务了

     

     以上为部署过程,脚本可以自行完善

  • 相关阅读:
    [bzoj1263]整数划分
    [bzoj3171]循环格
    [bzoj3551]Peaks加强版
    [bzoj3307]雨天的尾巴
    [bzoj2756]奇怪的游戏
    [bzoj4025]二分图
    人比人该死啊
    数据挖掘十大经典算法[0]-K-Means算法
    ISODATA算法
    CodeForces Round 197 Div2
  • 原文地址:https://www.cnblogs.com/ff111/p/15125011.html
Copyright © 2020-2023  润新知