万事须己运,他得非我贤。这篇文章主要讲述如何基于 Docker 快速搭建 Springboot + Mysql + Redis 项目相关的知识,希望能为你提供帮助。
【如何基于 Docker 快速搭建 Springboot + Mysql + Redis 项目】[TOC]
前言有时候我们需要快速启动一些项目,但是环境往往折腾了好久,因此弄一个可以重用的快速搭建的教程,??docker?
?简直就是这方面的神器,Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。本教程基于的前提条件:
- 机器已经安装配置好?
?JDK1.8?
?,并且环境变量已经配置成功 - ?
?Maven?
?已经配置好,??IDEA?
?中项目使用的默认??Maven?
?也配置成功 - 本地机器安装好?
?Docker?
? - 顺便提一句,我用?
?navicat?
?作为数据库可视化操作工具
项目目录
├── src :源代码
|├── main
||├── java
|||├── com.aphysia.springbootdemo
||||├── config:配置
|||||├── RedisConfig:redis配置
||||├── constant:常量
|||||├── RedisConfig:redis常量
||||├── controller:控制器
||||├── mapper:数据库操作接口
||||├── model:实体类
||||├── service:逻辑处理层,包括接口以及实现类
|||||├── impl:接口实现类
||||├──util:工具类
|||||├── RedisUtil:redis工具类
||||├──SpringdemoApplication:启动类
||├── resource
|||├── mapper 数据库操作sql
|||├── application.yml:全局配置类
|||├── user.sql: 初始化mysql
|├── test: 测试类
├── pom.xml :项目maven依赖关系
整体的目录如下:
搭建项目1. docker安装启动mysql以及redis
1.1 安装mysql查询?
?mysql?
?最新的镜像:docker search mysql
拉取最新的?
?mysql?
?版本docker pull mysql:latest
启动?
?mysql?
?,用户名??root?
?, 密码??123456?
?docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
可以通过?
?docker ps?
? 查看是否安装成功% docker ps
CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
574d30f17868mysql"docker-entrypoint.s…"14 months agoUp 2 days0.0.0.0:3306-> 3306/tcp, :::3306-> 3306/tcp, 33060/tcp mysql-test
1.2 安装redis查询?
?redis?
?的镜像docker search redis
拉取?
?redis?
?的最新镜像% docker pull redis:latest
latest: Pulling from library/redis
eff15d958d66: Pull complete
1aca8391092b: Pull complete
06e460b3ba1b: Pull complete
def49df025c0: Pull complete
646c72a19e83: Pull complete
db2c789841df: Pull complete
Digest: sha256:619af14d3a95c30759a1978da1b2ce375504f1af70ff9eea2a8e35febc45d747
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
?
?docker images?
?可以查看我们安装了哪些镜像,可以看到其实我之前也安装过??redis?
?的镜像:% docker images
REPOSITORYTAGIMAGE IDCREATEDSIZE
redislatest40c68ed3a4d23 days ago113MB
redis< none> 84c5f6e03bf014 months ago104MB
mysqllateste1d7dc9731da14 months ago544MB
docker/getting-startedlatest1f32459ef03816 months ago26.8MB
让我们启动一下?
?redis?
?的容器:% docker run -itd --name redis-test -p 6379:6379 redis
7267e14faf93a0e416c39eeaaf51705dc4b6dc3507a68733c20a2609ade6dcd6
可以看到?
?docker?
?里面现在有??redis?
?和??mysql?
?两个容器在跑了:2. 初始化数据库
主要是创建数据库以及测试使用的数据表,初始化数据库的语句:
drop database IF EXISTS test;
CREATE DATABASE test;
use test;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT "",
`age` int(11) DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES (1, 李四, 11);
INSERT INTO `user` VALUES (2, 王五, 11);
初始化数据如下:
3.创建项目
在IDEA中,File --> New --> Project --> Spring Initializr(选择JDK 8):
点击?
?Next?
?:选择?
?Web?
? 下面的??Spring Web?
?,??SQL?
?下面的 ??JDBC API?
?,??Mybatis?
?,??NoSQL?
?下的??Redis?
?,也可以不选,直接在??pom?
?文件里自己加入即可:一路点?
?Next?
?,最后??Finish?
?,创建好之后,记得更新一下??Maven?
?,安装依赖包。4.初始化代码
4.1 全局配置文件以及启动类全局配置文件?
?application.yml?
?:server:
port: 8081
spring:
#数据库连接配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8& useSSL=false
username: root
password: 123456
redis:
host: 127.0.0.1## redis所在的服务器IP
port: 6379
##密码,我这里没有设置,所以不填
password:
## 设置最大连接数,0为无限
pool:
max-active: 8
min-idle: 0
max-idle: 8
max-wait: -1
#mybatis的相关配置
mybatis:
#mapper配置文件
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.aphysia.spingbootdemo.model
#开启驼峰命名
configuration:
map-underscore-to-camel-case: true
logging:
level:
root: debug
启动类?
?SpringdemoApplication?
?:import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.aphysia.springdemo.mapper")
public class SpringdemoApplication
public static void main(String[] args)
SpringApplication.run(SpringdemoApplication.class, args);
4.2 实体类与数据库中user表对应的实体类?
?User.java?
?:package com.aphysia.springdemo.model;
public class User
int id;
String name;
int age;
public int getId()
return id;
public void setId(int id)
this.id = id;
public String getName()
return name;
public void setName(String name)
this.name = name;
public int getAge()
return age;
public void setAge(int age)
this.age = age;
4.3 Redis工具类?
?Redis?
?配置类??RedisConfig?
?:package com.aphysia.springdemo.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig
@Autowired
private RedisTemplate redisTemplate;
@Bean
public RedisTemplate redisTemplateInit()
//设置序列化Key的实例化对象
redisTemplate.setKeySerializer(new StringRedisSerializer());
//设置序列化Value的实例化对象
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
?
?Redis?
? 常量类 ??RedisConstant?
?:推荐阅读
- #yyds干货盘点#最全深入浅出聊聊IO
- WordPress(按自定义日期字段排序WP_Query并在每个月后拆分循环)
- WordPress关于Docker swarm插件的问题吗()
- WordPress新手,在安装主题和插件时保持以下错误
- WordPress导航菜单
- WordPress多站点-从wp_sitemeta获取数据
- 具有相同内容的WordPress多站点
- WordPress修改元查询
- 转移托管后,wordpress菜单,帖子和页面显示三重