flask+mysql+docker_flask+mysql的Docker 部署

本文详细介绍了如何使用Docker部署Flask应用程序并连接到MySQL数据库。首先,通过`docker run`命令创建并运行MySQL容器,设置端口映射、数据持久化和root密码。接着,解决了MySQL8.0的身份验证机制问题和中文乱码问题。最后,通过Dockerfile创建Flask应用镜像,并使用`docker run`命令启动Flask容器,将其与MySQL容器链接,确保Flask能够访问数据库。
摘要由CSDN通过智能技术生成

## 一、命令行方式+dockerfile部署。

1️⃣ 部署mysql容器 docker pull mysql #拉取mysql镜像 docker run --name mysql -v /Users/zhaotengwei/Desktop/mysql:/database -p 6666:3306 -e MYSQL_ROOT_PASSWORD=woaini123.. -d mysql

创建一个容器名字叫做mysql -v 挂载本地目录与容器内的目录,用:区分。冒号前面是本地宿主机目录,后面的是容器内的目录。如果/database不存在的话会自动创建。 挂载好了之后就可以实现本地与容器内目录的互联。比如你在挂载的本地目录里新增一个文件。那么容器内的那个目录也会相应的增加这个文件。 -p 6666:3306 端口映射 :前是本地端口,后是容器端口。 这样设置好之后,那么你连接宿主机上6666端口就可以访问容器内的3306端口了。(6666我随便设的) 下面的Navicat就可以连接了。 -e MYSQL_ROOT_PASSWORD=woaini123.. 设置环境变量 ,也就是设置数据库root密码,我没有设置用户,所以用的root。 -d 后台运行。 最后 的mysql 是镜像名称。

066ec694ecc698a760829a423e4489bf.png

这样运行之后就有了一个mysql容器在运行了。 2️⃣配置mysql并且创建数据库。 单单有这个容器是无法连接上mysql的。Navicat会提示连接失败。 mysql 8.0 默认使用 caching_sha2_password 身份验证机制;客户端不支持新的加密方式。 解决方案: 修改用户(root)的加密方式。 这里看上一篇docker(三)里有讲。

接下来遇到的问题是容器mysql的中文乱码问题。 https://blog.csdn.net/m0_37639542/article/details/72852875这一篇讲的很详细。 简单列举一下步骤: 1.docker exec -ti xxx(容器id) /bin/bash #进入容器 2.mysql -u root -p #进入mysql 3.mysql>SHOW VARIABLES LIKE 'character_set_%';//查看数据库字符集 基本上都如图所示:默认就是瑞典latin1

8563c979ecd8cb3c13abfbc832a100e9.png 4. SHOW VARIABLES LIKE 'collation_%';

3551f3e7616e09fc50ef775872964a47.png 图上的第一个 connection 就是我们通过workbench等客户端连接的时候指定的编码。 外部访问数据乱码的问题就出在这个connection连接层上

5.接下来我做了两件事来解决这个问题: 第一步:

9b872c255c5ee0250f3c2d5e3c3ba5d8.png 第二步: 修改配置文件 配置文件在etc/mysql/mysql.conf.d/mysql.cnf这个文件里头 (容器目录) 要自己安装vim apt-get updata apt-get install vim 修改结果:

8f18020f3b4003a740cdea88d9ef2c0f.png 最后Navicat导出主机上的sql数据库,在连接的容器数据库中载入sql文件创建容器中的数据库。 mysql 容器部分完成。

3️⃣部署flask 容器。 flask我用的dockerfile部署的。。 1.在你的web项目中touch一个dockerfile。 项目结构:

d1ce26e956acc1ab03aef3f2e31d1320.png dockerfile 内容:

1f78ec0bc3901a26332f74032ebf81e6.png

WORKDIR 指定工作目录 格式为 WORKDIR 。如该目录不存在,WORKDIR 会帮你建立目录。 使用 WORKDIR 指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,最好不要在RUN中用cd手动切换目录。 COPY . /app 复制当前目录的所有文件到/app目录下。 dockerfile编写好之后进入dockerfile所在的目录执行 docker build -t flask . #根据dockerfile创建一个叫flask的镜像。 最后 docker run --name web -p 5000:5000 --link mysql:mysql -d flask 创建容器并与mysql容器link.

大功告成,flask可以访问到mysql数据库了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值