springboot&mysql部署启动

这一章主要介绍怎么在k8s上面部署及启动springboot&mysql项目,现在就来使用spring开发一个查询数据库的项目。在k8s 实战篇 - mysql部署中有介绍如何搭建mysql及持久化数据。在此基础上使用spring boot框架对数据库查询,然后返回客户端操作结果。

1、编写springboot代码

我们可以参考mybatis-plus使用说明,编写java代码,参考快速开始 | MyBatis-Plus;spring boot项目初始化可以参考minikube 实战篇 - 镜像打包部署 - 1

1.1、首先在pom.xml中引入如下配置:

<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-boot-starter</artifactId>
   <version>3.5.2</version>
</dependency>

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
</dependency>

1.2、编写实体类及Mapper

User实体类,这个实体类在文章k8s 实战篇 - mysql部署 - 2可以找到建表信息

package com.docker.demo.data;

import lombok.Data;
import lombok.ToString;

@Data
@ToString
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

UserMapper文件是对User表进行数据库,可以对User表进行增删改查操作

package com.docker.demo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.docker.demo.data.User;

public interface UserMapper extends BaseMapper<User> {
}

HelloContoller是一个入口类。之前在minikube 实战篇 - 镜像打包部署 - 2中,有介绍及使用过,可以参考。在原来的基础上增加了,查询用户所有信息的代码。如下:

package com.docker.demo;

import com.docker.demo.data.User;
import com.docker.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

@RestController
public class HelloContoller {

    @Autowired
    UserMapper userMapper;

    @GetMapping("hello")
    public String helloworld(){
        return "hello world!";
    }
    
    @GetMapping("queryUser")
    public String queryUser(){
        List<User> users = userMapper.selectList(null);
        String userStrs = Arrays.toString(users.toArray());
        return userStrs;
    }
}

2、连接数据库查询

代码写完之后需要增加对数据裤的配置,配置文件:application.yaml。配置如下:

# DataSource Config
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://mysql.default.svc.cluster.local:3306/docker-demo?useSSL=false&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10
    username: root
    password: 123456

其中url配置成了:jdbc:mysql://mysql.default.svc.cluster.local:3306/docker-demo,在地址信息中可以直接使用mysql作为链接路径。通过<service-name>.<namespace-name>.svc.cluster.local进行访问,例如:mysql.default.svc.cluster.local。

3、部署项目&启动项目

可以参考minikube 实战篇 - 镜像打包部署 - 1minikube 实战篇 - 镜像打包部署 - 2里面有讲解如何进行项目的打包及上传镜像服务到dockerhub,完成之后进行部署,如下:

PS C:\Users\smy1102> kubectl create deployment docker-demo --image=halo26812/docker-demo:0.0.2
deployment.apps/docker-demo created
PS C:\Users\smy1102> kubectl expose deployment docker-demo --type=NodePort --port=8080
service/docker-demo exposed

4、访问查询数据库接口

部署成功之后,通过访问地址:http://{ip}:{port}/queryUser 进行访问:
在这里插入图片描述

访问成功。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐