首页 > 数据库 >DockerCompose中使用自定义网络的方式实现部署SpringBoot+Mysql+Redis

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

时间:2024-08-07 17:08:41浏览次数:8  
标签:SpringBoot 自定义 redis 192.168 user mysql docker DockerCompose

场景

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

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/140788458

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

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/140797109

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

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

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

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

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

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/128372122

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

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

 

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

下载地址

http://download.redis.io/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.11
    command: redis-server /etc/redis/redis.conf
    ports:
      - "379:6379"
    volumes:
      - ./redis/redis.conf:/etc/redis/redis.conf
      - ./redis/data:/data
    networks:
     badaonet:
       ipv4_address: 192.168.0.11
               
  mysql:
    image: mysql:8.0
    command: --lower_case_table_names=1
    environment:
      MYSQL_DATABASE: test
      MYSQL_ROOT_PASSWORD: ABC@123!
      MYSQL_ROOT_HOST: '%'
      TZ: Asia/Shanghai
    ports:
      - "306:3306"
    volumes:
      - ./mysql/data:/var/lib/mysql
    networks:
      badaonet:
        ipv4_address: 192.168.0.12
               
  java:
    image: openjdk:8u342-oracle
    command: [
      'java',
      '-jar',
      '/home/badao.jar'
    ]
    environment:
      TZ: Asia/Shanghai
    ports:
      - "996:996"
    volumes:
      - ./java:/home
    working_dir: /home/
    networks:
      badaonet:
        ipv4_address: 192.168.0.13
    depends_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.11
    port: 6379
    password: ABC@123!

 

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

然后上面执行

docker compose up

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

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

@RequestMapping("student")
@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @Autowired
    RedisCache 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成功

 

标签:SpringBoot,自定义,redis,192.168,user,mysql,docker,DockerCompose
From: https://www.cnblogs.com/badaoliumangqizhi/p/18347414

相关文章

  • ASP.NET Core 鉴权授权四(自定义Session)
    实体模型publicclassBaseModel{publicintId{get;set;}}publicclassAuthorization:BaseModel{publicstringRoute{get;set;}publicstringAuthorizationName{get;set;}}publicclassUser:BaseModel{publicstringUserName{......
  • Java 自定义注解笔记总结(油管)
    Java系列文章目录Java抽象相关知识笔记文章目录Java系列文章目录一、前言二、学习内容:三、问题描述四、解决方案:4.1自定义注解引入4.2自定义注解使用4.2.1自定义注解概念4.2.2自定义注解内部的属性五、总结:5.1学习总结:一、前言目的:学习自定义注解相关内......
  • springboot实战
    pom<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org......
  • 基于springboot+vue开发的垃圾分类识别系统
    背景随着社会的快速发展,计算机的影响是全面且深入的。日常生活中,“垃圾”无处不在,家庭公寓里的垃圾桶、街头巷尾的垃圾箱、城市郊区的垃圾场、校园的垃圾站点等等,你也常常会发现,垃圾处理时通常有着多种分类,随着垃圾分类的普及,用户的数量和管理员的工作量在不断增加,工作也更......
  • 保存/加载自定义 tf.keras.Model 时出现问题
    我正在构建一个作为自定义tf.keras.Model实现的自动编码器。虽然训练后的模型表现良好,但我无法正确保存并重新加载它。我已经尝试过model.save()方法和save_weights()但在这两种情况下,模型完全无法执行其任务。此自动编码器正在调用另外两个tf.keras.Model,即编码器和......
  • 基于springboot+MySQL校园社团信息管理系统的设计与实现-计算机毕设 附源码 02705
    springboot校园社团信息管理系统的设计与实现目 录摘要1绪论1.1研究背景1.2 研究意义1.3论文结构与章节安排2 校园社团信息管理系统系统分析2.1可行性分析2.2系统流程分析2.2.1数据增加流程2.2.2数据修改流程2.2.3数据删除流程2.3 系统......
  • 通过go自定义alertmanager 发送通知的webhook
    本文主要是大体介绍webhook的代码以及涉及到的服务部署,详细配置需要自己弄Prometheus、alertmanager部署先创建alertmanager、Prometheus的docker-composeyaml文件,下面只是把服务运行起来,具体功能需要自己配置,如果有就跳过version:'3'services:prometheus:ima......
  • 笔记:从Aurora 8b/10b 到Aurora 64b/66b (三):自定义PHY层收发
    相较于8/10来说没那么复杂,需要考虑的情况只有八种;但是gearbox的控制需要额外的心思:每三十二周期所有操作都需要停止;这一点在收发都需要注意;RX:核心思想是利用header做检测,将夹杂在数据流中的控制包滤除掉;modulegt_phy_rx(inputwirei_rx_clk......
  • 基于java+springboot+vue的人事管理系统
    ......
  • golang sliver二次开发自定义命令(格式乱后面再调)
    准备工作sliver客户端和服务端之间命令的通信采用的grpc,服务端和和植入程序通信使用的protobuf,所以在开发之前需要了解grpc和protobuf,相关文档:https://jergoo.gitbooks.io/go-grpc-practice-guide/content/chapter2/hello-grpc.htmlhttps://jergoo.gitbooks.io/go-grpc-pra......