用Docker部署flask+uWSGI+Nginx

发布时间:2022-08-19 14:17

本文是在一个Centos容器中安装Python3、flask、uWSGI、Nginx等软件,运行flask项目,最后生成Docker镜像。

创建Centos容器
登录一台Linux主机,安装docker软件。
若还未安装doker,其安装部署可参考博文centos7安装配置docker

1.创建一个Centos容器,让它在后台运行。

docker run -d --name deploy1 --network host centos:7 tail -f /dev/null
-d                # 让它以daemon方式在后台运行
--name deploy1    # 设置容器的名称
--network host    # 让它使用宿主机的网卡,使得容器监听的所有端口直接暴露在宿主机上
centos:7          # 要运行的镜像及其版本
tail -f /dev/null # 让容器一直执行某条命令,以免没有任务而自动退出

2.进入Centos容器。

docker exec -it deploy1 /bin/bash
-it     # 打开该容器的输入(stdin)和终端(tty)
bash	# 在容器中执行bash命令,启动一个shell,供用户操作

Ctrl+D退出容器。

将flask项目的源代码从宿主机拷贝到Centos容器中:

docker cp /root/flask_app deploy1:/root/
:/root/     # 容器中项目的目录
/root/flask_app	#宿主机中项目位置

之后便可以在Centos容器里部署flask项目,不满意就销毁重建。

docker ps                    # 列出所有运行中的容器
docker stop <容器名或ID>     # 终止一个运行中的容器

安装Python3及pip3
进入容器中的flask项目目录

1.安装Python3解释器:
参见博文:centos7安装python3
2.安装pip3
上面安装版本为Python3.6,已经自带了pip3。若出现未找到pip3命令的错误,可自行安装指定版本pip3

yum install python3-pip    # 安装指定版本的pip

或者执行

locate pip3

它应该给你一个这样的结果列表

/<path>/pip3
/<path>/pip3.x

转到/usr/local/bin创建指向pip3所在位置的符号链接

ln -s /<path>/pip3.x /usr/local/bin/pip3

或者
可以使用python3 -m pip作为pip3的同义词。

3.用pip3安装flask项目需要的Python第三方库。

如果项目目录下有一个requirements.txt,则可以用

pip3 install -r requirements.txt

一键安装所有第三方库。
如果某些依赖库没有成功安装,则后面尝试运行flask程序就可能报错,可以到那个时候再根据报错信息安装它。
安装依赖库的过程挺麻烦,可能少安装了某些依赖库、安装了多余的东西,也可能安装了错误的版本,甚至无法下载或安装。还好,遇到的报错大多可以在网上搜到解决方案。

生成requirements.txt方法:

  • 第一种
    适用于 单虚拟环境的情况:
    这种方式,会将环境中的依赖包全都加入,如果使用的全局环境,则下载的所有包都会在里面,不管是不是当前项目依赖的。

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号