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

开发 后端
这篇文章我们就来部署我们的后端Api。我们这次尝试在服务器和微信云托管都进行部署,部署于云托管也是现在个人开发者的另一种选择(个人觉得啊)不用自己运维确实省事而且还可以可视化监控资源。

​想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

在​​上篇文章​​我们讲了怎么用docker部署nginx应用网站,这篇文章我们就来部署我们的后端api。我们这次尝试在服务器和微信云托管都进行部署,部署于云托管也是现在个人开发者的另一种选择(个人觉得啊)不用自己运维确实省事而且还可以可视化监控资源。而且微信云托管有个好处就是可以在小程序公众号进行内网连接,从而避免了可能的ddos。

准备工作

准备docker,准备一个后端,这里演示的是用python flask框架做的一个后端,这个框架的一个好处就是简单,轻量。我的后端太长就不展示给大家了,大家可以使用下面的代码进行操作。

from flask import Flask
app = 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来查看是否修改成功。

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

这个registry mirrors变成你写进去的地址那么就成功了。然后我们需要先将我们的后端代码放进我们的服务器里。

4、放入文件

找到你python文件的地址,使用ftp传入到一个你喜欢的位置像我这样。

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

cd 进入然后打开Xftp将文件传入。

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

Dockerfile文件

这里的这个Dockerfile,这里可以在你的编辑器(pycharm)这些编写好了放进去,或者在服务器里自行创建都可,我这里是在编辑器中先创建好了,但是我在服务器中进行了修改。

注意:这里我命名为官方推荐命名(Dockerfile),这样命名的话不需要自己指定文件,否则build的时候需要自行指定文件。

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

requirements文件

这个文件的话在pycharm中也是很好生成的。我们只需创建这个文件(requirements.txt)然后他就会有提示。

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

这样就生成好了。

最后就是这样一个结构。

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

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。

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

大家一定要记住后面还有一点(.)。我这里就忘记了,详细的dockerfile教程可以看我​​这篇文章​​里面还是蛮详细的大家可以看看。

我的网不太好大约一分钟左右完成。耐心等待一会。

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

完成后使用docker images命令查看生成的镜像,可以看到第一个就是我创建的镜像。

运行容器

docker run -it --name aasee-flask01 -p 5000:5000 python-flask01。

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

我这里使用的是-it而不是后台运行,大家也可以使用-d进行后台运行。

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

这样就运行成功了。

我们可以去postman测试以下或者直接在网页上测试一下接口,都是可以的。这里我就去postman测试了。

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

ok测试成功。说明服务可行。后端就基本上线了。日志文件可以通过,docker logs + 容器名或容器id。

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

云托管部署

云托管部署当我们写出dockerfile文件之后就变得很简单了。首先先注册一个号 废话 。

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

创建好环境之后我们再新建一个服务,不使用模板,之后选择手动上传。

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

选择刚刚我们上传到服务器的目录文件夹。点击高级设置,选择有dockerfile文件,云托管说白了就是一个docker。然后部署就行了。

#夏日挑战赛# 实战Docker部署flask后端api并部署云托管服务-开源基础软件社区

这样就部署完成了。接下来就可以使用它作为我们的后台了,当然前端页面也是如此使用。至于到底使用哪个好点,大家自己酌情选择。

​想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com​​。

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2022-05-26 15:02:35

Docker容器云原生

2013-08-22 10:37:15

网络管理内部部署托管服务

2019-05-14 13:59:52

Flask服务器部署

2010-12-08 09:56:24

私有云部署

2022-03-28 18:59:02

DockerFlask深度学习

2013-09-27 09:32:20

云托管Daas

2018-07-19 15:43:04

CA TechnoloAPI管理

2021-07-26 14:31:49

GitLab KubernetesFlask Web

2022-07-12 17:24:48

NginxDocker

2012-01-06 09:48:51

云计算

2017-05-23 15:53:52

docker服务容器

2014-06-26 14:08:28

Azure云服务

2023-09-08 08:14:14

2015-07-21 14:38:02

Docker部署

2018-08-01 22:52:24

微服务容器云平台API网关

2013-05-21 09:21:12

2023-10-08 07:45:34

Npm解析服务前端

2013-12-16 15:19:10

GitDocker

2021-09-18 09:44:40

数字化
点赞
收藏

51CTO技术栈公众号