docker部署flask应用
文章目录
- 0.1 前提
- 0.2 目标:
- 1.1 vscode ssh设置
- 1.2 python环境部署
- 1.2.1 创建venv环境
- 1.3 flask 服务器部署
- 1.3.2 创建flask应用
- 1.3.3 gunicron服务器配置
- 1.4 打包镜像并上传到docker hub
- 1.4.1 阿里云ecs部署docker
- 1.4.2 配置docker镜像加速
- 1.4.3 使用Docker封装flask应用
- 1.4.3.2 创建Dockerfile文件
- 1.4.3.3 使用Dockerfile构建镜像
- 1.4.4 推送镜像到docker hub
- 1.4.4.1 注册docker hub账号
- 1.4.4.2 修改image tag
- 1.4.4.3 push到docker hub
0.1 前提
阿里ecs:Ubuntu20.0
0.2 目标:
- vscode SSH 到 阿里云ecs进行远程开发
- 阿里云ecs部署python开发环境
- flask 服务器部署
- 打包镜像并上传到docker hub
1.1 vscode ssh设置
四步完成vscode远程开发配置 - 简书 (jianshu.com)
输入要ssh的远程主机的ip
进入ssh配置页面
在打开的文件中输入
Host 1XX.77.X.XHostName 1XX.77.X.XXUser root
右键连接
输入密码,就可连接远程主机了。
1.2 python环境部署
如何在Ubuntu 20.04上创建Python虚拟环境?-51CTO.COM
1.2.1 创建venv环境
# ubuntu20 已移除python2且自带python3
apt update && apt upgrade
python3 -V
apt-cache search venv
apt -y install python3-venv # 创建venv环境
python3 -m venv /opt/my_first_venv
cd /opt/my_first_venv
# 激活venv环境
source my_first_venv/bin/activate# 激活后shell提示会变化为如下所示
(my_first_venv) # # 停用venv环境
(my_first_venv) deactivate
1.3 flask 服务器部署
Flask + Docker 无脑部署新手教程 - 知乎 (zhihu.com)
# 1 在venv环境中使用gnicron部署flask应用
pip install gunicorn gevent
1.3.2 创建flask应用
在项目根目录下创建start.py 文件,这是项目的启动文件
#start.py
from project import create_app #从project文件夹中的__init__.py中导入create_app函数app = create_app() #记住这里的变量名appif __name__ == '__main__':app.run(debug=True)
1.3.3 gunicron服务器配置
在项目根目录下创建 gunicorn.conf.py 文件
workers = 5 # 定义同时开启的处理请求的进程数量,根据网站流量适当调整
worker_class = "gevent" # 采用gevent库,支持异步处理请求,提高吞吐量
bind = "0.0.0.0:80"
测试项目运行
# start:app 中的start为前一步创建的start.py文件名,app为start.py文件中创建的flask app变量名gunicorn start:app -c gunicorn.conf.py
1.4 打包镜像并上传到docker hub
1.4.1 阿里云ecs部署docker
Install Docker Engine on Ubuntu | Docker Documentation
sudo apt-get remove docker docker-engine docker.io containerd runcsudo apt-get update
sudo apt-get install \ca-certificates \curl \gnupg \lsb-releasecurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgsudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker.iosystemctl enable docker
systemctl start docker
1.4.2 配置docker镜像加速
阿里云镜像加速: 容器镜像服务 (aliyun.com)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.js <<-'EOF'
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com","https://hub-mirror.c.163.com","https://mirror.ccs.tencentyun.com","http://f1361db2.m.daocloud.io"]
}
EOFsudo systemctl daemon-reload
sudo systemctl restart docker
1.4.3 使用Docker封装flask应用
# 生成项目依赖文件,后期安装可使用 pip install -r requirements.txt安装依赖
pip freeze -> requirements.txt
1.4.3.2 创建Dockerfile文件
在项目根目录下创建名为Dockerfile的文件,用于docker镜像构建
FROM python:3.6
WORKDIR /Project/demoCOPY requirements.txt ./
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simpleCOPY . .CMD ["gunicorn", "start:app", "-c", "./gunicorn.conf.py"]
WORKDIR 为项目要部署到服务器上的路径
CMD 里面的 start 是我们上面写的 python 启动文件名,app 是启动文件里面要启动的应用名(变量名)
1.4.3.3 使用Dockerfile构建镜像
# 在Dockerfile目录下执行
sudo docker build -t "testflask" . # 最后的 点 表示使用当前目录下的Dockerfile文件docker images # 查看镜像
1.4.4 推送镜像到docker hub
1.4.4.1 注册docker hub账号
Docker Hub
创建private 仓库,假设仓库名称为 ali/flask_server, 其中ali表示用户名,flask_server为repositories名。
1.4.4.2 修改image tag
# 1 查看生成的镜像
docker images REPOSITORY TAG IMAGE ID CREATED SIZE
testflask latest cadd2701b704 2 hours ago 998MB
python 3.8 ce9555db0df5 2 months ago 909MB
hello-world latest feb5d9fea6a5 5 months ago 13.3kB# 2 修改tag
docker tag testflask ali/flask_server:v1# 3 查看修改结果
docker images REPOSITORY TAG IMAGE ID CREATED SIZE
testflask latest cadd2701b704 2 hours ago 998MB
ali/flask v1 cadd2701b704 2 hours ago 998MB
python 3.8 ce9555db0df5 2 months ago 909MB
hello-world latest feb5d9fea6a5 5 months ago 13.3kB
1.4.4.3 push到docker hub
# 登录docker hub
docker login -u username -p# 推送
docker push ali/flask:v1
docker部署flask应用相关推荐
- Docker 部署 Flask
Docker 部署 Flask 最近在用 Monorepo => (Flask + React) + (Python + TypeScript) 写一些自己东西,记于此,温故而知新 WSGI S ...
- 实战基于Docker部署FLASK后端api并使用云托管服务
上篇文章我们讲了怎么用docker部署nginx应用网站,这篇文章我们就来部署我们的后端api.我们这次尝试在服务器和微信云托管都进行部署,部署于云托管也是现在个人开发者的另一种选择(个人觉得啊)不用 ...
- 使用docker部署flask项目
前言 本次部署是把2个项目.mysql.redis.uwsgi封装在一个容器中,ngnix封装在一个容器中 实际应用中最好是: 项目和uwsgi封装在一个容器中 mysql单独封装,可能还要读写分离, ...
- Docker部署Flask网站
最近练练手,防止忘了,在docker上部署了下Flask网站.先单步进行,后面可以通过docker compose直接部署. 1. docker运行mysql,数据持久化到宿主机本地硬盘 docker ...
- CentOS docker 部署 flask + uWSGI + Nginx + Supervisor错误
我用Superviso 启动 Nginx 和 uwsgi Superviso配置如下: Nginx 简单配置: 启动的效果: 启动Nginx的错误日志: 一直提示我端口被占用 但是我 ps -aux ...
- docker部署flask_使用Docker,GCP Cloud Run和Flask部署Scikit-Learn NLP模型
docker部署flask A brief guide to building an app to serve a natural language processing model, contain ...
- 【基于 docker 的 Flask 的深度学习模型部署】
文章目录 1.前言 2.docker简介 3.基于Falsk的REST API实现 4.编写dockerfile 5.基于docker的模型部署 1.前言 模型部署一直是深度学习算法走向落地的重要的一 ...
- docker部署python web应用_在 Docker 中运行一个 Python 的 Web 应用
几周前, Elastic Beanstalk声明在AWS云中配置和管理Docker容器.在本文中,我们通过一个简单的注册表单页面应用去理解Docker部署过程,该表单使用Elastic Beansta ...
- 利用flask写的接口(base64, 二进制, 上传视频流)+异步+gunicorn部署Flask服务+多gpu卡部署
一.flask写的接口 1.1 manage.py启动服务(发送图片base64版) 这里要注意的是用docker的话,记得端口映射 #coding:utf-8 import base64 impor ...
最新文章
- 关于Adodb.Stream的使用说明
- 汇总c#.net常用函数和方法集
- TopPaper:AI 初学者经典论文列表
- 修改centos7容器的时间和宿主机时间一致
- zookeeper centos7 集群部署
- c语言学生信息管理系统框架,vue实现学生信息管理系统
- iir matlab 系数,手把手教你用matlab生成STM32官方IIR滤波器的系数
- oracle下载jdk需要注册怎么办? jdk8下载
- Unity3d随机数生成
- DSP之ICETEK-DM6437-B开发
- lpush rpush 区别_Redis系列(六):数据结构List双向链表LPUSH、LPOP、RPUSH、RPOP、LLEN命令...
- fastdb缩小初始生成文件
- 关于CRC校验的一些总结
- php取网盘真实链接,利用蓝奏做个人小文件网盘和获取真实下载地址
- 2019年计算机二级考试mysql_2019年下半年计算机二级MySQL试题
- CSDN文章转onenote笔记(markdown)
- 计算机基础运用知识woord,《计算机基础知识word.doc
- kindle的xray怎么用_xray 使用说明高级版领取方式
- 永磁同步电机(PMSM)参数辨识(一)
- VQA(Visual Question Answering)技术