当前位置:   article > 正文

Docker +Jenkins实现微服务容器化部署_jenkins + docker 部署微服务

jenkins + docker 部署微服务

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)-CSDN博客文章浏览阅读2.8k次,点赞85次,收藏12次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502初识Docker

刚开始接触Docker,是在从传统行业转为互联网公司,项目的部署以及中间件的部署,基本都在Docker容器上;最早的时候所有的服务都是在若干台机器上,基本也都是集群部署,没有进行容器的统一管理,说实话那时候除了对虚拟机还有点概念,对容器化真没有概念,最早部署项目在linux环境下,通过shell脚本对项目进行打包、启动、服务关停、每次上线需要对生产环境的war包进行替换,重新编译,在进行启动,不同环境还要需要针对不同环境进行打包,比较麻烦;

慢慢的后来用上了Jenkins,一键式打包部署,就方便了很多,但是不同环境也需要来回切换;Docker容器化解决了,多个环境下,从开发到部署所有环境下的依赖包都在一起,在任何环境下都是可以运行的,使整个项目构建流程变的非常省时、省力;

虚拟化和容器化

  • 虚拟化:典型VMware虚拟机,节省了硬件资源,一台服务器上可以运行多台虚拟机,最早做银行的项目就是用的这些技术;
  • 容器化:docker与其说是应用层的容器化部署,其根本也是物理层的容器化,方便运维对多个服务进行统一容器化处理,每个容器也相当于一个很小的CentOS服务;

说的比较简单通俗,按照自己的理解方式,语言上可能不是很官方;

Docker file

关于Docker file其实就是将docker命令封装到文件里面,在生成镜像的时候将分别执行Docker file的命令,将服务部署到容器上;

目前基于项目情况,堆内存分配1G;

  1. FROM anapsix/alpine-java:8_server-jre_unlimited
  2. ENV JAVA_OPTS="\
  3. -server -Xmx1024m -Xms1024m -Xmn512m -Xloggc:./gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M \
  4. "
  5. EXPOSE 8402
  6. ADD Lxlxxx.jar app.jar
  7. ADD ./agent/ /opt/
  8. ENTRYPOINT ["java", "-Xmx2048m", "-javaagent:/opt/skywalking-agent.jar", "-Djava.security.egd=file:/dev/./urandom", "-jar","-Duser.timezone=GMT+8", "app.jar"]

Jenkins构建(CI/CD)

这是Jenkins构建项目的shell脚本,主要也是构建web镜像,Docker集成Jenkins做持续集成、持续部署,包括可以在每次commit、push代码的时候自动触发 Jenkins,给运维部署项目提供了很大的便利;

  1. if docker stop Lxlxxx; then
  2. echo "Lxlxxx 容器已停止"
  3. else
  4. echo "Lxlxxx 容器未运行"
  5. fi
  6. cd /home/data/Lxlxxx/
  7. chmod +x ./*
  8. #停止已建的容器,防止容器名,端口冲突
  9. if docker rm -f Lxlxxx; then
  10. echo "容器已删除,即将生成新容器"
  11. else
  12. echo "容器不存在,直接生成容器"
  13. fi
  14. #删除镜像
  15. if docker rmi /Lxlxxx; then
  16. echo "镜像已删除,即将生成新镜像"
  17. else
  18. echo "镜像不存在,直接生成镜像"
  19. fi
  20. cd /home/data/Lxlxxx #到项目根目录
  21. docker build -t /Lxlxxx . #根据dockerfile生成web镜像
  22. docker run -d -p 8460:8460 -e "SPRING_PROFILES_ACTIVE=test" --name Lxlxxx --log-opt max-size=512m --log-opt max-file=3 --restart=always -v /etc/localtime:/etc/localtime -v /data/sourceDir/:/data/sourceDir/ -v /root/agent/:/root/agent/ -e JAVA_OPTS='-Xmx2048m' -it -m 1536M --memory-swap 0 --net=host/Lxlxxx #运行镜像生成容器
  23. sleep 5
  24. #/bin/bash
  25. # 传入容器名称
  26. RESULT_DATA="${jenkins_url}/job/${JOB_NAME}/${BUILD_NUMBER}/console"
  27. containerName=Lxlxxx
  28. # 查看进程是否存在
  29. exist=`docker inspect --format '{{.State.Running}}' ${containerName}`
  30. if [ "${exist}" = "true" ]; then
  31. curl 'https://省略号' \
  32. -H 'Content-Type: application/json' \
  33. -d "
  34. {
  35. \"msgtype\": \"markdown\",
  36. \"markdown\": {
  37. \"content\": \"【测试环境】\n>构建项目<font color='green'>:【${JOB_NAME}】</font>\n>分支:(${branch})成功。\n>详情:<font color='comment'>[查看控制台](${RESULT_DATA})</font>\"
  38. }
  39. }"
  40. else
  41. curl '省略号' \
  42. -H 'Content-Type: application/json' \
  43. -d "
  44. {
  45. \"msgtype\": \"markdown\",
  46. \"markdown\": {
  47. \"content\": \"【测试环境】\n>项目<font color='red'>:【${JOB_NAME}】</font>\n>分支:(${branch})构建失败。\n>详情:<font color='comment'>请联系运维处理,[查看控制台](${RESULT_DATA})</font>\"
  48. }
  49. }"
  50. fi
  51. docker ps

Docker compose

compose 是docker的容器编排功能,通俗的来讲就是将服务编排到多容器Docker上,相当于docker的集群模式,通过配置docker-compose.yml来实现,通过编排来实现服务的统一部署,这样就可以将服务和中间件服务构成一个服务群;

  1. version: '3.8' //版本号
  2. services:
  3. rabbitmq: //服务名
  4. image: rabbitmq:3-management //镜像
  5. restart: always //自动重启
  6. ports:
  7. - 15673:15672
  8. registry:
  9. image: spring-boot-cloud/registry
  10. ports:
  11. - "8761:8761"
  12. config:
  13. image: spring-boot-cloud/config
  14. ports:
  15. - "8888:8888"
  16. monitor:
  17. image: spring-boot-cloud/monitor
  18. ports:
  19. - "8040:8040"
  20. zipkin:
  21. image: spring-boot-cloud/zipkin
  22. ports:
  23. - "9411:9411"
  24. gateway:
  25. image: spring-boot-cloud/gateway
  26. ports:
  27. - "8060:8060"
  28. auth-service:
  29. image: spring-boot-cloud/auth-service
  30. ports:
  31. - "5000:5000"
  32. serviceA:
  33. image: spring-boot-cloud/serviceA
  34. serviceB:
  35. image: spring-boot-cloud/serviceB

总结

在如今k8s盛行的年代,可以完整的对分布式系统进行支撑,也可以用k8s对docker集群进行管理,k8s和docker的区别在于,docker是一个开源的容器引擎,而k8s是集应用部署、运维、集群、开发、测试、监控等一体的管理工具;

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/504850
推荐阅读
相关标签
  

闽ICP备14008679号