前言
有时候我们需要快速启动一些项目,但是环境往往折腾了好久,因此弄一个可以重用的快速搭建的教程, docker 简直就是这方面的神器,Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。
本教程基于的前提条件:
- 机器已经安装配置好 JDK1.8 ,并且环境变量已经配置成功
- Maven 已经配置好, IDEA 项目使用的默认方式 Maven 也配置成功
- 本地机器安装好 Docker
- 顺便提一句,我用 navicat 作为数据库可视化操作工具
项目地址:
https://github.com/Damaer/DemoCode/tree/main/springboot/springdemo
项目目录
├── 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 ID IMAGE COMMAND CREATED STATUS PORTS NAMES
574d30f17868 mysql "docker-entrypoint.s…" 14 months ago Up 2 days 0.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
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 40c68ed3a4d2 3 days ago 113MB
redis <none> 84c5f6e03bf0 14 months ago 104MB
mysql latest e1d7dc9731da 14 months ago 544MB
docker/getting-started latest 1f32459ef038 16 months ago 26.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;