实战基于Docker部署FLASK后端api并使用云托管服务
上篇文章我们讲了怎么用docker部署nginx应用网站,这篇文章我们就来部署我们的后端api。我们这次尝试在服务器和微信云托管都进行部署,部署于云托管也是现在个人开发者的另一种选择(个人觉得啊)不用自己运维确实省事而且还可以可视化监控资源。而且微信云托管有个好处就是可以在小程序公众号进行内网连接,从而避免了可能的ddos攻击
准备工作
准备docker,准备一个后端,这里演示的是用python flask框架做的一个后端,这个框架的一个好处就是简单,轻量。我的后端太长就不展示给大家了,大家可以使用下面的代码进行操作
from flask import Flaskapp = Flask(__name__) @app.route('/')
def hello():return 'hello docker&flask'if __name__ == '__main__':app.run(debug=True, host='0.0.0.0', port=int(os.environ.get('PORT', 5000)))
下载docker
这里我们使用docker来进行部署,所以我们需要先去下载一下docker。详细的可以看我这篇文章,这里我们就加加速。这里是对于服务器的操作,对于云托管的比较简单。
(1)卸载旧版本
首先先使用
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
卸载旧版本,如果有的话(看情况自己判断)。
(2)设置下载源
sudo yum install -y yum-utils sudo yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
设置好了之后就可以进行下载了,下面是下载代码
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
注意:这样下载的是最新版本的,如果需要下载指定版本的话可以看我上面说的那篇文章。
(3)设置镜像加速
选择很多
科大镜像:https://docker.mirrors.ustc.edu.cn/
网易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:https://reg-mirror.qiniu.com
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{ "registry-mirrors": ["你的加速地址"] }
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
完成之后可以使用docker info
来查看是否修改成功。
这个registry mirrors
变成你写进去的地址那么就成功了。然后我们需要先将我们的后端代码放进我们的服务器里。
(4)放入文件
找到你python文件的地址,使用ftp传入到一个你喜欢的位置像我这样。
cd 进入然后打开Xftp将文件传入。
Dockerfile文件
这里的这个Dockerfile,这里可以在你的编辑器(pycharm)这些编写好了放进去,或者在服务器里自行创建都可,我这里是在编辑器中先创建好了,但是我在服务器中进行了修改
注意:这里我命名为官方推荐命名(
Dockerfile
),这样命名的话不需要自己指定文件,否则build的时候需要自行指定文件。
requirements文件
这个文件的话在pycharm
中也是很好生成的。我们只需创建这个文件(requirements.txt
)然后他就会有提示
这样就生成好了。
最后就是这样一个结构
(5)配置Dockerfile
接下来我们只需配置好Dockerfile文件就基本大功告成了。并且也不难。而且这个文件也可以在云托管中进行使用。配置如下:
# 先下载一个可以运行flask的基础镜像
FROM tiangolo/uwsgi-nginx-flask:python3.6
# 设置作者信息
MAINTAINER Aasee<xxx@qq.com>
# 设置工作目录
WORKDIR /app
# 将当前目录下的所有文件复制到docker引擎中的工作目录
COPY . /app
# 安装依赖
RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 暴露端口
EXPOSE 5000
# 执行我们的脚本文件
CMD ["python3", "main.py","0.0.0.0","5000"]
这个应该不难理解并且我也做了详细的注释。这样我们的 Dockerfile文件就算配置完成了。接下来就可以去build执行创建镜像了。
创建镜像
docker build -t python-flask01 .
大家一定要记住后面还有一点(.
)。我这里就忘记了,详细的dockerfile教程
可以看我这篇文章里面还是蛮详细的大家可以看看。
我的网不太好大约一分钟左右完成。耐心等待一会。
完成后使用docker images
命令查看生成的镜像,可以看到第一个就是我创建的镜像
运行容器
docker run -it --name aasee-flask01 -p 5000:5000 python-flask01
我这里使用的是-it
而不是后台运行,大家也可以使用-d
进行后台运行。
这样就运行成功了。
我们可以去postman测试以下或者直接在网页上测试一下接口,都是可以的。这里我就去postman测试了。
ok测试成功。说明服务可行。后端就基本上线了。日志文件可以通过,docker logs + 容器名或容器id
云托管部署
云托管部署当我们写出dockerfile文件之后就变得很简单了。首先先注册一个号 废话 。
创建好环境之后我们再新建一个服务,不使用模板,之后选择手动上传。
选择刚刚我们上传到服务器的目录文件夹。点击高级设置,选择有dockerfile文件,云托管说白了就是一个docker。然后部署就行了。
这样就部署完成了。接下来就可以使用它作为我们的后台了,当然前端页面也是如此使用。至于到底使用哪个好点,大家自己酌情选择。
实战基于Docker部署FLASK后端api并使用云托管服务相关推荐
- 基于docker部署前后端分离项目--->docker+Dockerfile+vue+nginx+uwsgi+django+socket+负载均衡
1. 介绍 本文基于阿里云服务器,安装的ubuntu20.04系统 适用于conten7.5系列 适用于ubuntu16.04以上系列 vue已经打包完成,所以不能使用我的vue项目 2. 部署 部署 ...
- 【基于 docker 的 Flask 的深度学习模型部署】
文章目录 1.前言 2.docker简介 3.基于Falsk的REST API实现 4.编写dockerfile 5.基于docker的模型部署 1.前言 模型部署一直是深度学习算法走向落地的重要的一 ...
- 推荐一款基于docker部署的个人免费笔记工具wiznote
推荐一款基于docker部署的个人免费笔记工具wiznote 作为一个爱写作爱折腾的程序员,在做某个事情的时候,脑子里总是会联想并且不断蹦出各种奇怪的创意和想法,但是这些想法很多时候都是一闪而逝,事情 ...
- Docker 部署 Flask
Docker 部署 Flask 最近在用 Monorepo => (Flask + React) + (Python + TypeScript) 写一些自己东西,记于此,温故而知新 WSGI S ...
- 猿创征文 | 国产数据实战之docker部署MyWebSQL数据库管理工具
猿创征文 | 国产数据实战之docker部署MyWebSQL数据库管理工具 一.MyWebSQL介绍 1.MyWebSQL简介 2.MyWebSQL特点 二.检查本地环境 1.检查docker状态 2 ...
- 基于docker部署的微服务架构(九): 分布式服务追踪 Spring Cloud Sleuth
为什么80%的码农都做不了架构师?>>> 前言 微服务架构中完成一项功能经常会在多个服务之间远程调用(RPC),形成调用链.每个服务节点可能在不同的机器上甚至是不同的集群上,需 ...
- 基于Docker部署Mysql主从复制-实战详解篇
一.前言 MySQL的主从复制详细讲解,根据网上教程也踩了很多坑,浪费了一些时间 ,特地全面的梳理下基于docker构建的mysql主从复制构建过程.遇到的问题以及提供安装包样例等 希望一篇文章足以解 ...
- pg安装部署linux_简简单单基于docker部署微服务网关
❝ 本文整理于今年3月,收录在个人开源仓库JavaScriptCollection中,其中很多概念不乏借鉴.摘抄自官网,便于复习相关概念,有兴趣的可以直接去仓库Clone文档学习.参考! ❞ 基本概念 ...
- 微服务开发及部署_简简单单基于docker部署微服务网关
❝ 本文整理于今年3月,收录在个人开源仓库JavaScriptCollection中,其中很多概念不乏借鉴.摘抄自官网,便于复习相关概念,有兴趣的可以直接去仓库Clone文档学习.参考! ❞ 基本概念 ...
最新文章
- 性能超FPN!北大、阿里等提多层特征金字塔网络
- python求微分方程组的数值解曲线01
- maven上传本地仓库
- Spring事务专题(四)Spring中事务的使用、抽象机制及模拟Spring事务实现
- html5编游戏好难,分享微信开发Html5轻游戏中的几个坑
- Invisor for Mac(媒体文件检查工具)v3.14免激活版
- 如何抵御频发的 DDOS 攻击?
- 45本Hadoop、大数据方向书籍,包邮送到家!
- 点击按钮跳转页面_获取快手主页跳转url scheme 协议的方法(app通用方法)
- Linux服务器查看任务计划,Linux的任务计划
- 程序员英文简历范例(通用,含初级、中级和高级)
- 静态分析之数据流分析与 SSA 入门 (一)
- 数据分析师基本技能——SQL
- chall.tasteless.eu 中的注入题
- 2021-04 提高转化-基础销量+基础销量+晒图买家秀+精心设计的问大家
- jenkins配置master-slave并发布dubbo服务
- 这几种常见的伪学习,看下你是不是也中招了?
- Win10系统QQ无法登录,00001错误解决办法
- Firebase国内替代方案
- 如何实现一个丝滑的点击水波效果