本次的实验环境是CentOS 7.9
已经安装了宝塔面板,并安装了Docker 管理器 3.9.1
。
MySQL 的安装与部署
1. 在 Docker 中安装 MySQL
【将 Docker 中 MySQL 数据库挂载到服务器】
将 Docker 中的数据以及配置文件映射到服务器的文件系统上,这样当删除了 Docker 容器后,之前的数据记录依然存在。
1 | docker run --restart=always --privileged=true -d \ |
-v
:文件挂载(宿主机文件路径
:Docker 容器文件路径
);-p
:端口映射(对外暴露端口
:Docker 容器内部端口
);--name
:容器名称;MYSQL_ROOT_PASSWORD=123456
:设置 MySQL 数据库的初始 root 密码为123456
;mysql:5.7
:指定 MySQL 版本为 5.7。
【若不需要挂载的话可以正常运行下面的命令】
1 | docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 |
【注意】:上述指令只适用于 Linux、Windows 系统等 x86 架构芯片的机器,若为 M1 芯片,需要使用如下命令安装较新的 MySQL 版本。
1 | docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql/mysql-server |
可能会遇到的错误
※ 数据库管理工具连接错误
错误提示:Host '172.17.0.1' is not allowed to connect to this MySQL server
说明所连接的用户帐号没有远程连接的权限,只能在本机(localhost)登录,需更改 MySQL 数据库里的 user 表里的 host 项。
- 进入容器:
1 | docker exec -it mysql /bin/bash |
- 登录 MySQL:
1 | mysql -uroot -p123456 |
- 修改权限表格
1 | use mysql; |
※ 无修改权限
错误提示:Access denied for user 'dorm'@'%to database'xxx'
1 | grant all privileges on *.* to 'dorm'@'%'; |
2. 在 Docker 中安装 phpMyAdmin
phpMyAdmin 是一种 MySQL 图形化 管理工具,该工具是基于 Web 跨平台的管理程序,并且支持简体中文。在宿主机的命令行运行下面的代码即可安装。
1 | docker run --name phpmyadmin -p 8080:80 --link mysql:db -d phpmyadmin/phpmyadmin:latest |
phpmyadmin
:容器名称;8080:80
:开放端口 8080 来映射宿主机的 80 端口;mysql
:刚才设置的 MySQL 的容器名称,如果刚才修改容器名称的话,一定记得要在这里修改。
安装完成后,通过 公网 IP:8080
即可访问如下页面,初始账号为 root,密码为刚才设置的 MYSQL_ROOT_PASSWORD=
后面的内容(123456
)PHPMyAdmin
可能会遇到的问题
※ 无法访问 phpMyAdmin
这种情况大多数是因为防火墙(或服务器的安全组规则)导致的。因为刚才自定义的 8080
端口在服务器中是默认不开放的,所以要配置服务器的安全组,将其开放。腾讯云开放安全组
3. 创建账户与数据库
新建一个项目账户(dorm),如下图所示。新增项目用户
【注意】:在项目中尽量不要使用 root 用户管理项目,而是单独创建以该项目名称为命名的数据库账户,并建立同名的数据库进行管理。
4. 本地 MySQL 的安装与操作
本人使用的是 M1 的 Mac 环境,因此对应安装了 M1 版本的 Docker 和 MySQL,具体步骤和①两步类似,所以这里就不再赘述。
本地是数据库管理软件我使用的的是免费开源的数据库管理软件“Sequel Ace”,它具有数据库管理软件的基本功能,在 AppStore 中就可以搜索到,而且是完全免费的。Sequel Ace
设计数据库
SpringBoot 连接 MySQL
1. porm.xml 文件
在 porm.xml 文件中的 <dependencies>
中添加 JDBC 的依赖。
1 | <dependency> |
更新 Maven 依赖。
2. application.yml 文件
修改 SpringBoot 配置文件,application.yml 文件,增加数据库相关信息。
1 | server: |
3. Java 类文件
添加 Java 类文件,DormInfo.java。
1 | package com.songxj.dormitory_system.api; |
4. 本地测试
本地测试结果如下:本地测试
5. 打包 jar 包
打 jar 包
6. 本地开发环境连接服务器 Docker
连接 Docker 宿主机,修改 Docker 服务文件
1 | vi /lib/systemd/system/docker.service |
将原来的 ExecStart
前面加上 #
号注释掉,然后在下面追加一行
1 | ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock |
重新加载配置
1 | systemctl daemon-reload |
重启 Docker 服务
1 | systemctl restart docker.service |
开放宿主机安全组中的 2375 端口开放宿主机安全组中的 2375 端口
在 IDEA 中安装 Docker 插件。Docker 插件
在 Docker 插件中连接宿主机服务器配置 Docker
7. Docker 在本地创建(build)并运行(run)镜像
- 创建镜像
1 | docker build -t dorm_sys:1.0.0 . |
- 运行镜像
1 | docker run -d -p 10110:8090 --name dorm_sys dorm_sys:1.0.0 |
【M1 芯片打包的 jar 包在 Linux 环境无法运行】
- M1 芯片(arm64)构建 Linux(amd64)可运行的镜像
1 | docker build --platform linux/amd64 -t dorm_sys:1.0.0 . |
8. 上传本地镜像到阿里云
首先在阿里云免费申请容器镜像服务(https://cr.console.aliyun.com/repository/)
- 登录阿里云容器镜像服务
1 | docker login --username=songxj01 registry.cn-hangzhou.aliyuncs.com |
- 上传镜像
1 | docker tag dorm_sys:1.0.0 registry.cn-hangzhou.aliyuncs.com/songxj01/dorm_sys:1.0.0 |
9. 在服务器拉取镜像并运行
1 | docker pull registry.cn-hangzhou.aliyuncs.com/songxj01/dorm_sys:1.0.0 |
1 | docker run -d -p 10110:8090 --name dorm_sys registry.cn-hangzhou.aliyuncs.com/songxj01/dorm_sys:1.0.0 |
在线测试:在线测试