DockerCompose中利用自界说网络的方式实现部署SpringBoot+Mysql+Redis ...

打印 上一主题 下一主题

主题 1010|帖子 1010|积分 3034

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
场景

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修改其内容为
  1. version: "3.8"
  2. services:
  3.   redis:
  4.     image: redis:5.0.9-alpine3.11
  5.     command: redis-server /etc/redis/redis.conf
  6.     ports:
  7.       - "379:6379"
  8.     volumes:
  9.       - ./redis/redis.conf:/etc/redis/redis.conf
  10.       - ./redis/data:/data
  11.     networks:
  12.      badaonet:
  13.        ipv4_address: 192.168.0.11
  14.                
  15.   mysql:
  16.     image: mysql:8.0
  17.     command: --lower_case_table_names=1
  18.     environment:
  19.       MYSQL_DATABASE: test
  20.       MYSQL_ROOT_PASSWORD: ABC@123!
  21.       MYSQL_ROOT_HOST: '%'
  22.       TZ: Asia/Shanghai
  23.     ports:
  24.       - "306:3306"
  25.     volumes:
  26.       - ./mysql/data:/var/lib/mysql
  27.     networks:
  28.       badaonet:
  29.         ipv4_address: 192.168.0.12
  30.                
  31.   java:
  32.     image: openjdk:8u342-oracle
  33.     command: [
  34.       'java',
  35.       '-jar',
  36.       '/home/badao.jar'
  37.     ]
  38.     environment:
  39.       TZ: Asia/Shanghai
  40.     ports:
  41.       - "996:996"
  42.     volumes:
  43.       - ./java:/home
  44.     working_dir: /home/
  45.     networks:
  46.       badaonet:
  47.         ipv4_address: 192.168.0.13
  48.     depends_on:
  49.       - redis
  50.       - mysql  
  51.          
  52. networks:
  53.   badaonet:
  54.     ipam:
  55.       config:
  56.         - 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、启动并验证是否有报错
实行如下
  1. docker compose up
复制代码
这里不加-d便于查看日志输出。
无明显报错可再次启动一个窗口通过
  1. docker ps
复制代码
验证是否都启动乐成

可以利用如下下令查看自界说网络的具体环境
  1. docker network inspect badao_badaonet
复制代码

可以看到网络已经乐成配置。
4、那么关键是在SpringBoot中如何进行毗连
这里在SpringBoot的配置文件中毗连mysql和redis时就可以直接利用docker compose配置文件
中指定的容器的ip,而且端口利用映射前容器内部的ip进行毗连。
比如毗连mysql
  1. url:jdbc:mysql://192.168.0.12:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
复制代码
毗连redis
  1.   redis:
  2.     # 地址
  3.     #本地测试用
  4.     host: 192.168.0.11
  5.     port: 6379
  6.     password: ABC@123!
复制代码

将以上步伐打包,并更改为badao.jar,上传至java目录下。
然后上面实行
  1. docker compose up
复制代码
后,可以毗连mysql以及redis分别测试是否启动乐成,然后在mysql中新建一个测试表
为了测试jar包毗连mysql和redis是否乐成,新建一个测试controller
  1. @RequestMapping("student")
  2. @RestController
  3. public class UserController {
  4.     @Autowired
  5.     private UserService userService;
  6.     @Autowired
  7.     RedisCache redisCache;
  8.     @RequestMapping("save")
  9.     public String save() {
  10.         User user = new User();
  11.         user.setUserId(new Random().nextInt( 1000 ) + 1);
  12.         user.setName("张三"+user.getUserId());
  13.         user.setAge(new Random().nextInt( 80 ) + 1);
  14.         userService.insert(user);
  15.         redisCache.setCacheObject("badao","222",100, TimeUnit.SECONDS);
  16.         String aaa = redisCache.getCacheObject("badao");
  17.         System.out.println(aaa);
  18.         return user.getName()+"创建成功!";
  19.     }
  20. }
复制代码
然后调用该接口测试插入mysql和redis数据是否乐成
  1. curl 127.0.0.1:996/student/save
复制代码
毗连并插入mysql乐成

毗连并插入redis乐成


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表