美文网首页
jenkins结合docker本机部署

jenkins结合docker本机部署

作者: 飞翼_U | 来源:发表于2018-02-03 17:46 被阅读157次

    上一篇文章讲到可以利用jenkins构建后得到部署包,本章会记录一下如何把部署包做成应用的镜像启动。

    这里涉及2块内容,第一个是如何在不需要jenkins的情况下做应用的镜像,第二是如何在jenkins中配置脚本去做镜像运行。第一部分不是本次的关注点,会略微提一下。

    一、做镜像

    在服务器上做应用的镜像,一般是写 dockerfile,此处也不列外,目录结构如下: image.png

    Dockerfile 和 all.sh 分别如下:

    [root@gaoyx preview]# cat Dockerfile 
    FROM alpine-tomcat:v1.0
    MAINTAINER chances-gyx
    VOLUME [ "/opt/product/preview/" ]
    ADD ./preview.xml /opt/product/tools/tomcat/conf/Catalina/localhost/
    RUN mkdir -p /opt/product/apps
    ADD ./apps/preview/ /opt/product/apps/preview/
    WORKDIR /opt/product/tools/tomcat/
    ADD ./all.sh /root/
    RUN chmod +x /root/all.sh
    CMD /root/all.sh
    
    
    [root@gaoyx preview]# cat all.sh 
    #!/bin/bash
    export JAVA_HOME=/data/jdk
    export PATH=$JAVA_HOME/bin:$PATH
    
    logsDir="/opt/product/data/preview/tomcat-preview-log"
    
    cd /opt/product/tools/tomcat/
    rm -rf logs
    if [ ! -d $logsDir ]; then  
      mkdir -p $logsDir
    fi
    ln -s /opt/product/data/preview/tomcat-preview-log  logs
    
    sh /opt/product/tools/tomcat/bin/catalina.sh run
    

    里面用到的tomcat基础镜像都是做好的,alpine-tomcat:v1.0,挂载目录也是根据应用实际情况配置的。

    二、在jenkins中配置做镜像+启动

    1)增加构建步骤: image.png

    写入以下脚本:

    #!/bin/bash
    dates=`date "+%Y%m%d"`
    projects="preview"
    sudo  rm  -rf  /opt/product/preview/apps/preview/*
    sudo cp  -rf  /var/lib/jenkins/workspace/preview/WebContent/*  /opt/product/preview/apps/preview/
    sudo docker stop $projects  || true
    sudo docker rm -f $projects || true
    sudo docker rmi  $projects:$dates || true
    sudo docker build -t $projects:$dates  /opt/product/preview
    sudo docker run --name=$projects -d -ti -p 38001:8080 -v /opt/product/data:/opt/product/data -v /data/jdk:/data/jdk  $projects:$dates
    
    构建,竟然出错了 image.png

    我百度了一下解决了,方法:

    编辑 /etc/sudoers 文件,将Default requiretty注释掉。
    sudo vim /etc/sudoers
    #Default requiretty
    #注释掉 Default requiretty 一行
    
    然后再构建一次就成功了,可以看到服务器上已经成功启动的镜像: image.png 应用访问正常: image.png
    另外,

    再附1个微服务(jar包 )的Dockerfile 应用的编写方式:

    [root@gaoyx hn_telecom_collect]# cat Dockerfile 
    FROM alpine-tomcat:v3.0
    MAINTAINER chances-gyx
    VOLUME [ "/opt/product/data/" ]
    ADD ./cbms_telecom_collect-0.0.1-SNAPSHOT.jar  /opt/product/tools/cbms_telecom_collect-0.0.1-SNAPSHOT.jar
    #RUN mkdir -p /opt/product/apps
    RUN sh -c 'touch /opt/product/tools/cbms_telecom_collect-0.0.1-SNAPSHOT.jar'
    ENV JAVA_HOME="/data/jdk"
    
    ADD ./all.sh /root/
    RUN chmod +x /root/all.sh
    ENTRYPOINT ["/root/all.sh"]
    CMD ["/usr/sbin/init"]
    
    [root@gaoyx hn_telecom_collect]# cat all.sh 
    #!/bin/bash
    export JAVA_HOME=/data/jdk
    export PATH=$JAVA_HOME/bin:$PATH
    JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8  -Duser.timezone=GMT+08"
    
    cd /opt/product/tools/
    rm -rf config
    ln -s  /opt/product/data/hn_telecom_collect/config
    
    cd /opt/product/tools/
    
    $JAVA_HOME/bin/java $JAVA_OPTS -jar -Dspring.config.location=./config ./cbms_telecom_collect-0.0.1-SNAPSHOT.jar
    [root@gaoyx hn_telecom_collect]# 
    
    

    <完!>

    相关文章

      网友评论

          本文标题:jenkins结合docker本机部署

          本文链接:https://www.haomeiwen.com/subject/elcczxtx.html