前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记录下利用jenkins自动化构建中一些优化的东东

记录下利用jenkins自动化构建中一些优化的东东

作者头像
晓果冻
发布2022-06-17 15:10:27
2960
发布2022-06-17 15:10:27
举报

记录下利用jenkins自动化构建中一些优化的东东

前言,不了解的可以去看下我之前的文章

之前在使用jenkins构建的时候必须在本地把环境变量改成服务器端的地址,修改的次数多了,感觉很啰嗦,于是琢磨着怎么动态选择环境,刚好也看了蘑菇大佬的DockerCompose一键部署蘑菇博客(Nacos版),jar包启动时指定环境。但感觉自己的部署方式不太适合用dockerCompose,因为我部署jenkins的服务器和部署博客的项目不在同一台服务器,又因为我每个服务的镜像比较大(700-800M),每次push到阿里云容器仓库很费时,部署服务的服务器还要再拉取,无形中增加了时间成本,所以还是选择让jenkins将构建好的jar包直接发送给要部署服务的服务器(jar包才100多M),下面上我的成果

改变的就是Dockerfile和Jenkinsfile还有事先将生产环境的配置文件放置到要部署服务的服务器

  • Dockerfile文件
代码语言:javascript
复制
    from java:8
    
    ## 设置挂载点
    VOLUME /tmp
    
    ## 复制并修改重命名
    ADD mogu_picture-0.0.1-SNAPSHOT.jar picture.jar
    
    #复制配置文件到容器的/config目录下
    ADD ./config /config
    
    #
    WORKDIR /home/mogu_blog/picture
    
    # 运行jar包
    RUN bash -c 'touch /picture.jar'
    #指定配置文件/config/***.yml,因为上面第三步将本地配置文件放到了容器的/config中
    #指定jvm参数
    ENTRYPOINT ["java","-Xms256m","-Xmx256m","-jar","-Djava.security.egd=file:/dev/./urandom","-Dspring.config.location=/config/application.yml,/config/bootstrap.yml","/picture.jar"]
  • Jenkinsfile,其实没啥改动,就是将上次部署之后清空文件夹的命令去掉了
代码语言:javascript
复制
    #!/bin/sh
    NUM_1=`docker ps -a | grep picture | grep -vi grep |wc -l`
    echo "容器是否存活:******************"${NUM_1}"******************"
    NUM_2=`docker images | grep picture | grep -v grep | wc -l`
    echo "镜像是否存在:******************"${NUM_2}"******************"
    if [[ "${NUM_2}"!="0" ]];then
         echo "---------镜像存在!!!,判断容器是否存活-----------"
         if [[ "${NUM_1}"!="0" ]];then
             echo "---------容器存活,停止容器并删除容器---------"
            docker stop picture
            docker rm picture
         fi
        echo "--------删除镜像---------"
       docker rmi picture
    fi
    echo "----------开始构建镜像......--------------"
    docker build -t picture /home/mogu_blog/picture/
    echo "---------运行容器------------"
    docker run -dit --name picture -p 8602:8602 picture:latest
  • 服务端配置文件的放置

为什么这样能读取到配置呢,看下大佬写的博客,我就直接截图了,因为读取配置文件是有优先级的

下一步准备解决前端的动态读取配置文件

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 记录下利用jenkins自动化构建中一些优化的东东
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档