> 文章列表 > 用docker承载mysql

用docker承载mysql

用docker承载mysql

这两天部署系统到生产服务器,前端后端部署docker是毫无疑义的,但mysql呢?

答案是mysql可以部署到docker。

1、数据文件挂载到宿主

将mysql部署于docker,会有一个担心,就是docker容器的删除非常的容易,一不小心删掉,数据就没有了。但其实,创建docker容器的时候,可以将数据文件、配置文件等挂载到宿主机,万一容器删掉,数据仍在;再次创建docker容器,仍然可以识别这些数据(但这一步我没有试)。

参考创建容器脚本:

1、下载镜像
docker pull mysql:8.0.232、创建容器
sudo docker run -p 3307:3306 --name mysql \\
-v /fs01/KT1/mysql/mysql-files:/var/lib/mysql-files \\
-v /fs01/KT1/mysql/conf:/etc/mysql \\
-v /fs01/KT1/mysql/log:/var/log/mysql \\
-v /fs01/KT1/mysql/data:/var/lib/mysql \\
-e MYSQL_ROOT_PASSWORD=口令 \\
-d mysql:8.0.23

注意不同的mysql版本,创建脚本可能会有所不同。

2、位于另一个docker里的应用程序如何访问该mysql?

应用程序和mysql,本是同根生,但位于不同的docker,隔江相望,鸡犬相闻却始终有隔阂,怎么访问?

关键是在应用程序的配置中,这个mysql的IP是多少?127.0.0.1是不行的,因为不在一个docker里。对于docker里面的程序而言,docker就是操作系统。

此时应该找出宿主机的地址。倾向于找以太网地址。因为一台服务器,不可能开放太多端口给互联网,尤其是数据库,能不开放就不开放,所以写服务器互联网地址,不合适。

用ifconfig查看宿主机的地址,找到:
用docker承载mysql
然后数据库连接串可以这样写:

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.122.1:3307/szdata?characterEncoding=utf-8&useSSL=false&serverTimezone=Hongkong&allowPublicKeyRetrieval=trueusername: 用户名password: 口令 # 你的数据库密码

也有所谓docker网络,用于docker之间互访,因为不太了解,暂时还说不出什么门道。

51K歌软件