百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

「实战」docker-compose 编排 多个docker 组成一个集群并做负载

wptr33 2025-02-10 14:36 10 浏览

本文目标

   docker-compose,对spring boot应用进行一个集群(2个docker,多个类似,只要在docker-compose.yml再加boot应用的服务即可)发布的过程

架构

spring boot使用nginx作为反向代理,redis作为缓存,mysql作为数据库,全部docker化

主要配置文件说明

application-compose.yml

docker-compose.yml

启动springboot项目看看接口情况

生成jar包

复制jar包

生成docker镜像

或者


1?? 进入到项目所在的目录下
2?? cd /Users/mengfanxiao/Documents/project/person/springboot/docker-compose/compose-demo
3?? docker build . -t compose-demo:1.0

启动docker compose

docker-compose up -d
d 是不显示运行时的日志输出
使用  docker-compose logs 查看
  可以看到,redis, mysql, spring boot 2个,nginx 的容器都启动了

初始化mysql数据库

  • 查看mysql的docker id
docker ps
  • 把 compose.sql文件copy到docker容器里 /opt目录下
docker cp compose.sql 01bd894f9ebd:/opt
  • 进入mysql的docker容器
docker exec -it 01bd894f9ebd /bin/bash
  • 使用 docker容器里 /opt/compose.sql 初始化数据库1?? mysql -u root -p输入docker-compose.yml里设置的root用户的密码 2?? source /opt/compose.sql

异常处理

  • Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required.
访问 curl 127.0.0.1/redis 报上面的异常
解决方法 不配置redis访问密码
  • Failed to obtain JDBC Connection

访问 http://127.0.0.1/commands 报上面的错
解决方法 mysql docker端口映射

流程梳理

1、打jar包
2、将jar包生成dokcer镜像
3、docker compose   :mysql、redis、2个springboot、nginx 都启动好
4、访问nginx接口路由转发到springboot 然后访问redis和mysql

接口测试

对测试结果分析

  • 因为nginx的端口是80, 所以不用端口号访问
  • 两次 /redis的访问,返回的ip 不一样, 一个是172.18.0.4, 一个172.18.0.5,看来两个boot应用都可以访问了。

扩展

  • 重新开始 执行 docker-compose down
  • 查看 docker-compose.yml里的 db_data 映射到哪里
docker volume ls
  1??  图中红框是实际db_data的位置。
  
  2??  这里实际保存mysql的数据,即使删除mysql的容器(docker-compose down,  或 docker rm xxx),
   
  3??  下次再建立容器时,数据还在,root密码不会变。
 
  4?? 如果docker-compose里密码改变的话,就要删除db_data这个volume,让docker-compose重建volume, 再重新初始化数据库。
 
     (当然进入 docker容器里改root密码也行,不过这要用mysql客户端,相对麻烦)
  
     docker volume rm compose-demo_db_data

代码资源

https://gitee.com/pingfanrenbiji/compose-demo.git

参考文献

https://www.cnblogs.com/bear129/p/12523573.html

相关推荐

IIR数字滤波器原理及实现方法

欢迎大家关注转发...

MATLAB机器学习工具箱

MATLAB机器学习工具箱MATLAB包含统计和机器学习工具箱(StatisticsandMachineLearningToolbox),其包含如下一些子模块:探索性数据分析、数据降维、机器学...

MATLAB二分法求方程的根(实例加程序)

零点的存在性定理早在高中阶段,我们就学习过函数的零点存在性定理。简单地说,对于区间[a,b]上的连续函数f(x),如果满足f(a)f(b)<=0,那么函数在[a,b]上至少存在一个零点。...

优化算法matlab大杀器 —— 实现秃鹰算法

注意:此代码实现的是求目标函数最大值,求最小值可将适应度函数乘以-1(框架代码已实现)。.代码实现...

实例讲解MATLAB绘图坐标轴标签旋转

在我们进行绘图时,需要在图片上添加上做标轴的标签,但是当数据量比较多时,例如一天24小时的数据,这时把每个小时显示在左边轴的标签上,文字内容放不下,因此需要将坐标轴标签旋转一定的角度,这样可以更好在图...

MATLAB的quiver函数绘制箭头向量图

MATLAB的quiver函数绘制箭头向量图,quiver函数的基本语法如下:基本语法...

「高中物理」电场和电势怎么理解?利用matlab工具完成可视化

高中物理给出了电场力和场强的计算方法,但是没给出电势的计算方法。下面先给出利用高中物理可接受的方法推导电势的公式可以看出电势就是场强的积分,也就是说场强是电势对距离的导数matlab做等量异种、同种...

Matlab绘制图像,imagesc和pcolor的区别【工作记录4】

注意:此文章主要针对本人在工作中遇到的问题进行记录和经验上的总结,难免存在错误和遗漏,如有任何问题,请留言,我会尽快回复。最近用Matlab绘制图像时,发现用pcolor和imagesc画图区别挺大...

Matplotlib 是Python中类似 MATLAB 的绘图工具

专栏推荐...

硬核浪漫!圣诞节给对象送礼的5个最没用小技巧

《圣诞节里吃饺子》...

MATLAB画一阶系统单位阶跃响应、单位脉冲响应、单位斜坡响应曲线

在确定系统的数学模型后,便可以用几种不同的方法去分析控制系统的动态性能和稳态性能。在经典控制理论中,常用时域分析法、根轨迹法或频域分析法来分析线性控制系统的性能。显然,不同的方法有不同的特点和适用范围...

奇怪的Matlab画图技巧系列2–不一样的线条标记

毕业季马上要到了,给大家总结一些我平常用到的奇特但是好用的Matlab画图技巧不一样的线条标记论文画图通过需要通过添加不同标记或者线形,区别不同类型的参数曲线,比较土豪的同学可以选择用颜色区别外加全部...

MATLAB画等高线的源程序和实例

源程序clearclcx=[60555951443937362944370121419191712323271415182429363937...

奇怪的Matlab画图技巧系列4–动图生成

毕业季马上要到了,给大家总结一些我平常用到的奇特但是好用的Matlab画图技巧MatlabGif动图保存毕业论文除了论文本身以外,在毕业论文的交流和最后的答辩过程中,通常需要制作PPT跟老师进行汇报...

Spring Boot 打包与部署全面指南:从基础到高级实践

前言作为Java开发者,掌握SpringBoot应用的打包与部署是必备技能。本文将全面系统地介绍SpringBoot应用的打包与部署方式,从基础到高级,涵盖各种场景和需求。...