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

DockerCompose中使用自定义网络的方式实现部署SpringBoot+Mysql+Redis

场景

Docker中Docker网络-理解Docker0与自定义网络的使用示例:

Docker中Docker网络-理解Docker0与自定义网络的使用示例_docker 配置 docker0-CSDN博客

Docker中使用自定义网络方式实现Redis集群部署与测试流程:

Docker中使用自定义网络方式实现Redis集群部署与测试流程-CSDN博客

上面介绍了Docker中自定义网络的相关知识。

如果项目使用Docker Compose编排,比如最近的例子,搭建Springboot项目并使其连接

Mysql和redis,则如何通过自定义网络的方式实现。

如果不考虑自定义网络的实现方式,只需要使用Docker Compose实现编排部署各服务可以参考如下

docker-compose入门以及部署SpringBoot+Vue+Redis+Mysql(前后端分离项目)以若依前后端分离版为例:

docker-compose入门以及部署SpringBoot+Vue+Redis+Mysql(前后端分离项目)以若依前后端分离版为例_docker-compose部署java mysql redis-CSDN博客

注:

博客:
霸道流氓气质-CSDN博客

实现

1、首先按照上面的文章搭建项目目录如下

注意这里redis使用的版本是5.0.9,所以要下载其对应版本的配置文件,redis.conf

下载地址

Index of /releases/

下载对应版本后,解压找到redis.conf,并修改其内容注释掉bind 127.0.0.1,并修改连接密码。

然后还需要授予此文件权限

chmod 777 redis.conf

mysql下新建空的data目录即可。redis目录下data目录也是空目录。

2、新建docker-compose.yml修改其内容为

version: "3.8"services:redis:image: redis:5.0.9-alpine3.11command: redis-server /etc/redis/redis.confports:- "379:6379"volumes:- ./redis/redis.conf:/etc/redis/redis.conf- ./redis/data:/datanetworks:badaonet:ipv4_address: 192.168.0.11mysql:image: mysql:8.0command: --lower_case_table_names=1environment:MYSQL_DATABASE: testMYSQL_ROOT_PASSWORD: ABC@123!MYSQL_ROOT_HOST: '%'TZ: Asia/Shanghaiports:- "306:3306"volumes:- ./mysql/data:/var/lib/mysqlnetworks:badaonet:ipv4_address: 192.168.0.12java:image: openjdk:8u342-oraclecommand: ['java','-jar','/home/badao.jar']environment:TZ: Asia/Shanghaiports:- "996:996"volumes:- ./java:/homeworking_dir: /home/networks:badaonet:ipv4_address: 192.168.0.13depends_on:- redis- mysql  networks:badaonet:ipam:config:- subnet: 192.168.0.0/24

注意这里的yml配置文件一定要注意空格缩进,不要使用tab,缩进使用2个空格,key后面跟一个空格。

编写完yml配置文件后建议找格式化校验的网站进行校验格式。

上面配置文件中最下面networks部分就是自定义网络的声明

紧跟着的badaonet是自定义的名称,后面的subnet是指定子网。

然后上面每个容器就可以通过networks指定自定义网络的名称以及指定ip

比如这里的mysql指定使用自定义网络的192.168.0.12 ip,并将其容器内部的3306端口映射到306容器外端口。

3、启动并验证是否有报错

执行如下

docker compose up

这里不加-d便于查看日志输出。

无明显报错可再次启动一个窗口通过

docker ps

验证是否都启动成功

可以使用如下命令查看自定义网络的详细情况

docker network inspect badao_badaonet

可以看到网络已经成功配置。

4、那么关键是在SpringBoot中如何进行连接

这里在SpringBoot的配置文件中连接mysql和redis时就可以直接使用docker compose配置文件

中指定的容器的ip,并且端口使用映射前容器内部的ip进行连接。

比如连接mysql

url:jdbc:mysql://192.168.0.12:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8

连接redis

  redis:# 地址#本地测试用host: 192.168.0.11port: 6379password: ABC@123!

将以上程序打包,并更改为badao.jar,上传至java目录下。

然后上面执行

docker compose up

后,可以连接mysql以及redis分别测试是否启动成功,然后在mysql中新建一个测试表

为了测试jar包连接mysql和redis是否成功,新建一个测试controller

@RequestMapping("student")
@RestController
public class UserController {@Autowiredprivate UserService userService;@AutowiredRedisCache redisCache;@RequestMapping("save")public String save() {User user = new User();user.setUserId(new Random().nextInt( 1000 ) + 1);user.setName("张三"+user.getUserId());user.setAge(new Random().nextInt( 80 ) + 1);userService.insert(user);redisCache.setCacheObject("badao","222",100, TimeUnit.SECONDS);String aaa = redisCache.getCacheObject("badao");System.out.println(aaa);return user.getName()+"创建成功!";}}

然后调用该接口测试插入mysql和redis数据是否成功

curl 127.0.0.1:996/student/save

连接并插入mysql成功

连接并插入redis成功

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 计算机毕业设计选题推荐-校内跑腿业务系统-Java/Python项目实战
  • 【busybox记录】【shell指令】logname
  • Javacript 高级程序设计(系统学习)
  • Vision Pro使用GLFT 加载模型shader错误解决办法
  • 内网穿透--LCX+portmap转发实验
  • 基于Golang实现Kubernetes边车模式
  • Android 是如何进行内存管理的
  • Python 中的装饰器是如何工作的,有哪些实际应用场景?
  • Flink 实时数仓(九)【DWS 层搭建(三)交易域汇总表创建】
  • LVS中NAT模式和DR模式实战讲解
  • 锂电池充电板电路设计
  • 网络云相册实现--nodejs后端+vue3前端
  • 【Python】爬取网易新闻今日热点列表数据并导出
  • 网络安全抓包封包WEB
  • Java基础语法之封装
  • Docker入门(二) - Dockerfile
  • Git初体验
  • HTTP 简介
  • JAVA_NIO系列——Channel和Buffer详解
  • js算法-归并排序(merge_sort)
  • LeetCode18.四数之和 JavaScript
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Tornado学习笔记(1)
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 前端之Sass/Scss实战笔记
  • 使用parted解决大于2T的磁盘分区
  • 自制字幕遮挡器
  • Python 之网络式编程
  • 阿里云服务器如何修改远程端口?
  • 树莓派用上kodexplorer也能玩成私有网盘
  • #前后端分离# 头条发布系统
  • %@ page import=%的用法
  • ()、[]、{}、(())、[[]]命令替换
  • (4)STL算法之比较
  • (function(){})()的分步解析
  • (LLM) 很笨
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (poj1.2.1)1970(筛选法模拟)
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)ssm码农论坛 毕业设计 231126
  • (十三)Flink SQL
  • (四)linux文件内容查看
  • (自适应手机端)行业协会机构网站模板
  • .net core Redis 使用有序集合实现延迟队列
  • .net core 管理用户机密
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET Core中Emit的使用
  • .NET MVC之AOP
  • .net连接oracle数据库
  • .NET下的多线程编程—1-线程机制概述
  • @Transaction注解失效的几种场景(附有示例代码)
  • @vue/cli 3.x+引入jQuery
  • [ solr入门 ] - 利用solrJ进行检索