当前位置: 首页 > 科技观察

实战Docker部署Flask后端Api并部署云托管服务

时间:2023-03-22 10:20:29 科技观察

部署Flask后端Api,实战用Docker部署云托管服务=“内联”>了解更多开源,请访问:开源基础软件社区https://ost.51cto.com在上一篇文章我们讲了如何使用docker部署nginx应用网站。在本文中,我们将部署我们的后端API。这次我们尝试同时部署在服务器和微信云主机上。部署在云主机上也是个人开发者的另一种选择这种选择(个人认为)省事不用自己运维,也可以可视化监控资源。而微信云主机的好处就是可以在小程序公众号连接内网,从而避免了可能的ddos。Preparation准备Docker,准备后端。这是使用pythonflask框架制作的后端。该框架的优点之一是它简单且轻量级。我的后端太长了,所以我不会给你看。您可以使用以下代码进行操作。fromflaskimportFlaskapp=Flask(__name__)@app.route('/')defhello():return'hellodocker&flask'if__name__=='__main__':app.run(debug=True,host='0.0.0.0',port=int(os.environ.get('PORT',5000)))下载docker这里我们使用docker进行部署,所以需要先下载docker。详情见我这篇文章,这里我们来加速。这里是服务器的操作,对于云主机来说还是比较简单的。1.卸载旧版本首先使用:sudoyumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine卸载旧版本,if如果是(自己判断)。2.设置下载源sudoyuminstall-yyum-utilssudoyum-config-manager\--add-repo\http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo设置好之后就可以下载了。下载代码如下。sudoyuminstalldocker-cedocker-ce-clicontainerd.iodocker-compose-plugin注意:本次下载的是最新版本。如果需要下载指定版本,可以看我上面提到的那篇文章。3、设置镜像加速,选择多个USTC镜像:https://docker.mirrors.ustc.edu.cn/网易:https://hub-mirror.c.163.com/阿里云:https://<你的ID>.mirror.aliyuncs.com七牛云加速器:https://reg-mirror.qiniu.comsudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-'EOF'{"registry-mirrors":["你的加速地址"]}EOFsudosystemctldaemon-reloadsudosystemctlrestartdocker完成后,可以使用dockerinfo查看是否修改成功。如果这个注册表镜像变成了你写的地址,那么就成功了。然后我们需要先把我们的后端代码放到我们的服务器中。4.放入文件找到你的python文件的地址,用ftp传到你喜欢的位置像我一样。cd进去然后打开Xftp把文件传进去。Dockerfile文件这里的Dockerfile可以用你的编辑器(pycharm)写好放进去,也可以在服务器自己创建。我是先在编辑器中创建的,但我是在服务器中创建的。进行了修改。注:这里我命名为官方推荐的名称(Dockerfile)。如果这样命名,则不需要自己指定文件,否则需要在构建时自己指定文件。需求文件在pycharm中生成也很好。我们只需要创建这个文件(requirements.txt),他就会得到提示。这就是它的生成方式。终于有了这样的结构。5.配置Dockerfile接下来我们只需要配置Dockerfile就基本完成了。这并不困难。而且这个文件也可以用于云托管。配置如下:#首先下载一个可以运行flask的基础镜像FROMtiangolo/uwsgi-nginx-flask:python3.6#设置作者信息MAINTAINERAasee#设置工作目录WORKDIR/app#更改当前目录将docker引擎中的所有文件复制到工作目录COPY./app#安装依赖RUNpip3install-rrequirements.txt-ihttps://pypi.tuna.tsinghua.edu.cn/simple#暴露端口EXPOSE5000#执行我们的脚本文件CMD["python3","main.py","0.0.0.0","5000"]应该不难理解,我也做了详细的注释。这样我们的Dockerfile就配置好了。接下来就可以去build执行镜像创建了。创建镜像dockerbuild-tpython-flask01。大家一定记得后面有个点(.)。这里忘记了,详细的dockerfile教程可以看我的文章,写的还是比较详细的,大家可以看看。我的网不太好,大约需要一分钟左右的时间才能完成。耐心等待一段时间。完成后使用dockerimages命令查看生成的镜像,可以看到第一个就是我创建的镜像。运行容器dockerrun-it--nameaasee-flask01-p5000:5000python-flask01。我这里用的是-it而不是后台运行,你也可以用-d后台运行。这成功了。我们可以去postman下面测试或者直接在网页上测试接口,都是可以的。这里我去postman测试了一下。ok测试成功。表示服务可用。后台基本在线。可以传日志文件,dockerlogs+容器名或者容器id。云托管部署当我们写出dockerfile后,云托管部署变得非常简单。先注册个账号废话。环境创建好后,我们不使用模板新建一个服务,然后选择手动上传。选择我们刚刚上传到服务器的目录文件夹。点击AdvancedSettings,选择有dockerfile文件,云主机就是简单的docker。然后部署它。这样就完成了部署。然后我们就可以把它作为我们的后台了,当然前端页面也是这样使用的。至于哪个更好用,就看大家自行斟酌选择了。了解更多开源知识,请访问:开源基础软件社区https://ost.51cto.com。