当前位置: 首页 > news >正文

docer swarm集群部署springboot项目

1.准备两台服务器,安装好docker、docker-compose
因为用到了docker仓库,安装harbor,可以从github下载离线安装包
2. 我这边用到了gitlab-ci,整体流程也都差不多
1)打包mvn clean install
2)打镜像 docker-compose -f docker-compose.yaml build
3) 登陆harbor
docker login -u admin -p *** 192.168.178
// 版本号可通过${CI_COMMIT_SHA:0:8}设置为每次提交的hash值,我这边方便就写laster了
4) 打tag docker tag 192.168.1.78/test/test-server:laster 192.168.1.78/test/test-server:laster
5) 上传到harbor docker push 192.168.1.78/test/test-server:laster
docker-compose.yaml例子

version: '3.7'
services:
  test-server:
    build:
      context: ./server #context指明dockerfile路径
    environment:
      - JAVA_OPS=${JVMOPS}
      - DB_OPS=${DBOPS}
    container_name: test-server  #容器名
    hostname: test-server
    image: ${IMAGE_TAG}    #镜像名
    healthcheck: #健康检查
      test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"]
      interval: 10s #间隔时间
      timeout: 10s
      retries: 3 #重试次数
      start_period: 60s #开始时间
    deploy:
      mode: replicated #用户可以指定集群中容器的数量(默认),global:每个节点一个
      replicas: 2 #replicated时指定共几个容器
      # 更新配置
      restart_policy:
        condition: on-failure #非0退出容器后才重启
        max_attempts: 1 #重启1次
      update_config:
        # 每次更新数量
        parallelism: 1
        # 每次更新时间(更新完这个,就更新第二个)
        delay: 60s
        order: start-first #首先启动新任务, 并且正在运行的任务暂时重叠
        failure_action: continue
    networks:
      - default
networks:
  default:
    driver: overlay
    ipam:
      config:
        - subnet: 10.0.2.0/24 #设置2网段,腾讯内网ip默认1网段,冲突了

6)拉镜像 docker pull 192.168.1.78/test/test-server:laster
7) 运行 docker stack deploy -c docker-compose.yaml --with-registry-auth test

遇到的问题

  1. docker容器为10.0.1.0/24网络段,和腾讯的内网ip冲突,所以在docker-compose.yaml中设置网络段为2网段
  2. 更新时,流量还是会分发至重启的节点,就肯定是访问不到接口报错了,后来百度说用健康检查,所以在docker-compose.yaml中增加了 healthchek模块,start_period试自己项目启动时间设置
  3. 上一点虽说加了健康检查 ,但是发现,启动的容器,刚开始时strarting ,看日志已经启动成功,但是过了一会就unhealth,就自动stop了,百度说是健康检查失败,但是docker logs看日志也没错,后来百度说看 docker inspect 容器名,有个state,Health的log,看到是找不到curl的命令,于是就在dockerfile中,增加了RUN apt update && apt install -y curl
  4. springboot的健康检查,需依赖actuator组建,具体可以百度,本地运行时,可直接访问提示{“status”:“UP”}
  5. order: start-first 后面测试发现,通过健康检查后,旧的才会stop掉

相关文章:

  • 详细分析KeepAlive的基本知识 并缓存路由(附Demo)
  • 使用easyocr、PyPDF2对图像及PDF文档进行识别
  • 探秘 Linux 系统编程:进程地址空间的奇妙世界
  • 基于EM期望最大化算法的GMM参数估计与三维数据分类系统python源码
  • SP导入模型设置
  • 解决跨域请求的问题(CORS)
  • iOS UIGestureRecgonizer自动化点击埋点
  • XPath路径表达式
  • 文件上传漏洞详细利用流程
  • BambuStudio学习笔记:format格式化输出
  • Linux中是如何进行日志管理的?
  • C语言--简单排序算法(冒泡、选择、插入)
  • 迷你世界脚本出生点接口:Spawnport
  • 论文阅读笔记:UniFace: Unified Cross-Entropy Loss for Deep Face Recognition
  • java在mavenclean之后点击主启动函数,一直显示java找不到符号的解决办法
  • oracle常用参数解析
  • 数据结构篇—栈(stack)
  • 蓝陵科技:以“数字底座”之力,全面布局影视行业工业化
  • 【赵渝强老师】监控Redis
  • Redis100道高频面试题
  • 南宁网站建设报价/谷歌优化技巧
  • dw个人网站制作教程/seo推广关键词公司
  • 建盏公司最新消息/seo快速排名软件价格
  • 模仿大型门户网站做ppt/怎么营销推广
  • 邮箱注册网站申请/最近三天的新闻大事简短
  • 论坛网站怎么做/视频剪辑培训机构