Docker容器部署Flask项目

Docker容器部署Flask项目

 

1.项目准备

准备好要部署的项目,在这里我写了一个用了Flask框架的web项目。

flask项目简要介绍:

项目里用到flask-sqlalchemy技术,用来连接mysql数据库。

在flask项目中,创建类模型实现python程序类模型与数据库中表的映射

主要业务逻辑:客户访问时(GET请求),返回一个html页面,客户提交注册信息(POST请求),将客户提交的注册信息提取并将数据插入到后端服务器,最终返回注册成功页面。

 

(1) 再把项目部署到Docker容器之前,我们需要在windows上修改程序中sqlalchemy连接数据库的地址。

(2) 这里的地址我们需要填写mysql容器的地址(172.18.0.3),在运行时添加主机host=‘0.0.0.0’

即:

if __name__ == "__main__":
    app.run(host='0.0.0.0')

 

(3) 修改完成后打开文件所在目录,删除用pycharm编译的文件,只保留源代码、static目录、template目录

(4) 压缩文件并上传

(5) 将上传的文件进行解压放到project(自己创建好)目录内

(6) 用python命令对文件进行编译:python3 -m compileall /root/flask_domo5

 

2.Docker容器准备

(1) 首先创建mysql数据库docker容器:

docker pull mysql:8.0.18 #拉取mysql8.0.18版本镜像

(2) 给数据库创建一个专用的网段,防止数据库在docker中在重启后网络ip发生变化

docker network create --subnet=172.18.0.0/16 mynet #创建网段(重要!)

docker network rm mynet #删除网段命令

 

(3) docker run -d -p 4306:3306 mysql:8.0.18 --net mynet --ip 172.18.0.3 -v /root/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 #运行mysql镜像(重要!)

命令解释:-p 端口映射, --net 指定网段,-ip 指定IP,-v docker容器与宿主机目录的挂载 ,-e设置mysql密码

运行上述命令后,mysql8.0.18容器运行

可进入容器mysql数据库进行操作。

 

(4) 创建python容器(这里我们用到的python镜像版本最好与windows主机上pythonSDK版本相同,防止环境不同所带来不必要的麻烦)

docker pull python3.7.5 #拉取python镜像

 

(5) docker run -d -p 9500:5000 -v /root/project:/root/project --net mynet --ip 172.18.0.2 python:3.7.5

命令解释:-p 端口映射 -v docker 容器与宿主机目录挂在 --net 指定网段,-ip 指定IP

 

现在python容器已经开始运行,由于宿主机与python的docker容器进行了目录挂载,我们实现将项目放置在宿主机的/root/project目录下,那么python的docker容器中也出现了相同的项目。

 

apt-get install flask      #容器内安装flask

apt-get install flask-sqlalehcmy    #容器内安装sqlalchemy

apt-get install pymysql       #容器内安装pymysql

 

进入python容器,项目目录,运行flask项目

[root@localhost ~]# docker exec -it 688572e12f20 /bin/bash

root@688572e12f20:~/project/flask_demo05# python app.py

 

 

3.项目启动成功!

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值