美文网首页
Docker结合Jenkins实现自动化构建部署(三)

Docker结合Jenkins实现自动化构建部署(三)

作者: 王大千_xMol_西摩尔 | 来源:发表于2019-01-31 16:06 被阅读0次

    经过前两节的项目部署和总结,需要对现有的项目部署步骤和方案,进行一个改进。

    改进思路:

    1、由之前的一个镜像里面只能创建一个容器,只能运行一个项目--->修改为一个镜像里面可以创建多个容器,每个容器运行不同的项目(对应不同的端口)。
    2、容器运行的项目由原来的war包改为jar包
    3、(单台机器)做到镜像、容器已经创建不需要删除,就能实现项目的迭代更新部署
    4、(单台机器)实现jenkins自动化构建部署

    第1条,如果只创建一个镜像,那么这个镜像就要求必须是基础环境的镜像,不能包含任何项目有关的个性化信息,对应的DockerFile文件内容如下:

    ===================================================
    
    #使用的基础镜像
    FROM daocloud.io/centos:latest
    
    #作者信息
    MAINTAINER WANGWENQIAN "wenqianwang@creditharmony.cn"
    
    #创建持续化存储
    VOLUME /tmp
    
    #创建目录(在镜像上创建)
    RUN mkdir -p /data/jdk
    
    #把当前目录下的jdk文件夹添加到镜像
    ADD jdk /data/jdk
    
    #添加环境变量
    ENV JAVA_HOME /data/jdk
    ENV PATH /data/jdk/bin:$PATH
    ENV JRE_HOME $JAVA_HOME/jre
    ENV CLASSPATH .:$JAVA_HOME/lib:$JRE_HOME/lib
    
    #执行java命令
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/data/app.jar"]
    
    ===================================================
    

    通过dockerfile只构建一个镜像(只包含项目运行所需要的环境)

    各个项目之间的差异性,都体现在创建容器的命令上面(启动容器的时候,通过"- v"指定项目挂载,分配不同的端口号。达到一个镜像,多个容器(不同端口,不同项目)的效果),如下两条创建容器的命令:

    容器1:8863端口的question-view项目

    docker run -d -v /data/projects/telrobot-question-view/8863/telrobot-question-view-0.0.1-SNAPSHOT.jar:/data/app.jar -p 8863:8863 --name telrobot-question-view-c-8863 telrobot-question-view-i
    

    容器2:8864端口的question-view项目

    docker run -d -v /data/projects/telrobot-question-view/8864/telrobot-question-view-0.0.1-SNAPSHOT.jar:/data/app.jar -p 8864:8864 --name telrobot-question-view-c-8864 telrobot-question-view-i
    

    关注点1:docker run 命令中的 -v的命令(实现磁盘挂载,此处直接挂载指定的jar包,且需要重命名为app.jar [[原因是Dockerfile的最后的ENTRYPOINT 命令是要求可执行的jar包名字为app.jar ,即"java -jar app.jar"]]),两个命令虽然都是app.jar但是因为处在不同的容器中,所以不会冲突覆盖。

    关注点2:docker run 命令中的 -p的命令,为不同的容器映射出不同的端口。

    第2条,之前文章介绍的项目是war包项目部署,需要依赖tomcat,但是spring cloud是jar包发布,且jar中自带中间件,所以不需要再构建镜像的时候,多搭建一个tomcat的容器配置。 镜像更简洁,干净了。

    第3条,之前文章介绍的项目更新部署项目包的时候,都需要删除容器、镜像,然后重新创建镜像、容器,重新挂载项目并启动,才能达到更新项目的目的。 而现在,我们通过执行docker run 的命令的时候,就已经指定挂载的项目jar包,所以只需要stop容器-->项目新jar上传到指定路径-->start容器即可实现项目更新部署。

    关注点1:docker stop后,然后再docker start 启动容器的时候,可以自动更新挂载路径下的jar包,这样就能保证重启后的docker容器加载的是最新的jar项目包。

    第4点,请参照《Docker结合Jenkins实现自动化构建部署(二)》的文章。jenkins的配置和搭建整体思路不变。

    相关文章

      网友评论

          本文标题:Docker结合Jenkins实现自动化构建部署(三)

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