准备好要部署的项目,在这里我写了一个用了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
(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