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-serverimage: ${IMAGE_TAG}    #镜像名healthcheck: #健康检查test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"]interval: 10s #间隔时间timeout: 10sretries: 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: 60sorder: start-first #首先启动新任务, 并且正在运行的任务暂时重叠failure_action: continuenetworks:- default
networks:default:driver: overlayipam: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掉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/896952.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python测试框架Pytest的参数化

上篇博文介绍过,Pytest是目前比较成熟功能齐全的测试框架,使用率肯定也不断攀升。 在实际工作中,许多测试用例都是类似的重复,一个个写最后代码会显得很冗余。这里,我们来了解一下pytest.mark.parametrize装饰器&…

开发博客系统

前言 准备工作 数据库表分为实体表和关系表 第一,建数据库表 然后导入前端页面 创建公共模块 就是统一返回值,异常那些东西 自己造一个自定义异常 普通类 mapper 获取全部博客 我们只需要返回id,title,content,us…

【Spring Boot 应用开发】-05 命令行参数

Spring Boot 常用命令行参数 Spring Boot 支持多种命令行参数,这些参数可以在启动应用时通过命令行直接传递。以下是一些常用的命令行参数及其详细说明: 1. 基本配置参数 --server.port端口号 指定应用程序运行的HTTP端口,默认为8080。 jav…

20250304学习记录

第一部分,先来了解一下各种论文期刊吧,毕竟也是这把岁数了,还什么都不懂呢 国际期刊: EI收集的主要有两种, JA:EI源刊 CA:EI会议 CPCI也叫 ISTP 常说的SCI分区是指,JCR的一区、…

2024 年 MySQL 8.0.40 安装配置、Workbench汉化教程最简易(保姆级)

首先到官网上下载安装包:http://www.mysql.com 点击下载,拉到最下面,点击社区版下载 windows用户点击下面适用于windows的安装程序 点击下载,网络条件好可以点第一个,怕下着下着断了点第二个离线下载 双击下载好的安装…

网络安全检查漏洞内容回复 网络安全的漏洞

网络安全的核心目标是保障业务系统的可持续性和数据的安全性,而这两点的主要威胁来自于蠕虫的暴发、黑客的攻击、拒绝服务攻击、木马。蠕虫、黑客攻击问题都和漏洞紧密联系在一起,一旦有重大安全漏洞出现,整个互联网就会面临一次重大挑战。虽…

汽车智能钥匙中PKE低频天线的作用

PKE(Passive Keyless Entry)即被动式无钥匙进入系统,汽车智能钥匙中PKE低频天线在现代汽车的智能功能和安全保障方面发挥着关键作用,以下是其具体作用: 信号交互与身份认证 低频信号接收:当车主靠近车辆时…

uiautomatorviewer定位元素报Unexpected ... UI hierarchy

发现问题 借鉴博客 Unexpected error while obtaining UI hierarchy android app UI自动化-元素定位辅助工具 Unexpected error while obtaining UI hierarchy:使用uiautomatorviewer定位元素报错 最近在做安卓自动化,安卓自动化主要工作之一就是获取UI树 app端获…

通俗的方式解释“零钱兑换”问题

“零钱兑换”是一道经典的算法题目,其主要问题是:给定不同面额的硬币和一个总金额,求出凑成总金额所需的最少硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。 解题思路 动态规划:使用动态规划是解决零钱兑…

GBT32960 协议编解码器的设计与实现

GBT32960 协议编解码器的设计与实现 引言 在车联网领域,GBT32960 是一个重要的国家标准协议,用于新能源汽车与监控平台之间的数据交互。本文将详细介绍如何使用 Rust 实现一个高效可靠的 GBT32960 协议编解码器。 整体架构 编解码器的核心由三个主要组…

Halcon 车牌识别-超精细教程

车牌示例 流程: 读取图片转灰度图阈值分割,找车牌内容将车牌位置设置变换区域形状找到中心点和弧度利用仿射变换,斜切车牌旋转转正,把车牌抠出来利用形态学操作拼接车牌号数字训练ocr开始识别中文车牌 本文章用到的算子(解析) Halcon 算子-承接车牌识别-CSDN博客 rgb1_to_gray…

UDP透传程序

UDP透传程序 本脚本用于在 设备 A 和 设备 B 之间建立 UDP 数据转发桥梁,适用于 A 和 B 设备无法直接通信的情况。 流程: A --> 电脑 (中继) --> B B --> 电脑 (中继) --> A 需要修改参数: B_IP “192.168.1.123” # 设备 B 的…

Holtek HT82V42A深度解析:CCD/CIS信号处理的集成化解决方案

——简化图像采集系统设计的终极利器 一、HT82V42A核心参数与外设资源 HT82V42A是Holtek专为图像传感器信号处理设计的模拟前端芯片,集成CCD/CIS信号处理与LED驱动功能,关键参数如下: 参数类别规格说明信号处理通道单通道CCD/CIS模拟信号输…

详细分析KeepAlive的基本知识 并缓存路由(附Demo)

目录 前言1. 基本知识2. Demo2.1 基本2.2 拓展2.3 终极 3. 实战 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 基本知识推荐阅读:KeepAlive知识点 从实战中学习,源自实战中vue路由的…

记一次误禁用USB导致键盘鼠标失灵的修复过程

背景说明 在电脑上插入了一个USB hub,然后弹窗提示:“集线器端口上出现电涌”,点开让选择“重置”或者“关闭”,不小心点了关闭,结果这个usb口就被关了,再插任何东西都没反应,找了很多办法都恢…

小米手机如何录制屏幕?手机、电脑屏幕录制方法分享

大家最近有没有遇到想记录手机屏幕操作的情况? 比如精彩的游戏瞬间、有趣的视频教程,或者需要录制屏幕来制作演示材料。小米手机在这方面可是个好帮手,今天就来给你好好唠唠,小米手机如何录制屏幕,以及后续如何处理这…

如何将JAR交由Systemctl管理?

AI越来越火了,我们想要不被淘汰就得主动拥抱。推荐一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站 废话不多说,进入正题。下面开始说如何使用 systemctl…

chrome Vue.js devtools 提示不支持该扩展组件,移除

可能是版本不兼容,可以重新安装,推荐网址极简插件官网_Chrome插件下载_Chrome浏览器应用商店 直接搜索vue,下载旧版,vue2、vue3都支持,上面那个最新版本试了下,vue2的肯定是不能用

【RabbitMQ】RabbitMQ的核心概念与七大工作模式

🔥个人主页: 中草药 🔥专栏:【中间件】企业级中间件剖析 在现代分布式系统和微服务架构中,消息队列(Message Queue) 是解决服务间通信、系统解耦和流量削峰的关键技术之一。而 RabbitMQ 作为一…

SQLAlchemy系列教程:理解SQLAlchemy元数据

SQLAlchemy是Python开发人员的强大ORM工具。SQLAlchemy中的元数据是对象-关系映射配置的集合,允许开发人员无缝地定义和使用数据库模式。 使用元数据 SQLAlchemy中的元数据充当各种数据库描述符(如表、列和索引)的容器。这使开发人员能够通…