展开

文章目录

修改历史

使用Docker部署flask应用

2022-05-22 23:24:37 应用部署 1070

简介

容器化部署已经成为了当下一种“潮流”,而这种“潮流”里的主角就是Docker,之前介绍过如果通过Nginx+gunicorn来部署flask应用,本篇介绍如何通过Docker来进行flask的应用部署。

1. 安装Docker

本文所有操作均在ubuntu2204上进行,请知悉!同时Docker的官方文档最开始使用的dockerfile,但是对于新手来说,我个人感觉dockerfile不是太友好(比如对于我来说),因此本文只介绍如何手动在Docker容器里面部署flask应用!

通过apt命令查看软件源中是否包含有docker

apt-cache policy docker.io

如果出现类似下图的结果,则说明软件源中存在有docker的安装包直接通过下面的命令进行安装即可

sudo apt-get install docker.io
# 查看docker版本详细信息
sudo docker version

如果显示如下图所示的信息,则说明docker成功安装了

如果软件源里面没有docker的包,则可以直接去docker官网下载,然后通过dpkg -i命令进行安装

2. 创建Docker容器

在docker中有两个概念:镜像、容器。镜像顾名思义,就是我们平时所说的操作系统比如ubuntu、centos等,但是在docker中的镜像一般都是经过精简后只提供最小的运行单元,比如你通过docker pull ubuntu 会自动将最新的ubuntu镜像从docker的服务器拉去到本地,通过docker images 可以看到如下图所示的信息,镜像的大小只有77.8MB.

镜像是容器的基础,一个镜像可以创建多个容器,容器就是运行web应用的宿主机,简而言之就是类似于虚拟机,但是跟虚拟机还是有很大的差别,镜像与容器的关系如下图所示。

通过下面的命令就可以创建我们自己的docker容器了

sudo docker pull ubuntu # 从docker镜像仓库中拉去ubuntu最新的镜像
sudo docker run -p 8001:5000 -it ubuntu /bin/bash # 通过本地的ubuntu镜像去创建容器
sudo docker ps -a

通过上面的命令就可以创建一个docker容器了,结果如下图所示则说明容器创建成功了,下面解释一下上面的参数

  • -p 由于我们是将web应用部署在docker容器内部,容器对于宿主机来说是两个不同的环境,通过-p参数就可以将容器的端口映射到宿主机的端口,比如外部客户端访问宿主机的8000端口的服务器,实际上是访问到容器内部5000端口的服务
  • -it 加上这个参数我们就可以通过bash的方式进入容器内部
  • -a ps命令默认只会显示出正在运行的容器,加上-a参数可以显示本机所有的容器

创建好容器之后,就可以通过start命令去运行容器了,显示下图的信息就说明容器已经成功运行了

sudo docker start adoring_wescoff # 跟容器名称
sudo docker ps 

3. 进入容器手动部署应用

容器成功启动后,我们就可以通过exec命令进入容器内部,然后部署我们的应用了,不过在这之前我们可以通过rename去给容器重新修改一个名字,因为我们在执行run命令的时候,没有通过name参数给容器指定一个名称,因此docker会自动给我们的容器创建一个随机的名称,如下图所示,将容器重新命名为flask_app,然后通过ps命令去查看,容器显示命名称为flask_app,则说明容器名称修改成功。

sudo docker rename adoring_wescoff flask_app
sudo docker ps 

成功修改容器名称后,通过exec命令进入容器内部

sudo docker exec -it flask_app /bin/bash

在根目录中通过下面的命令创建一个简单的flask应用,并启动

mkdir demo 
apt update 
apt install python3 python3-pip vim # 安装一些必要的包
pip install flask 
cd demo
vim app.py

在app.py文件中输入下面的代码,通过python app.py运行应用

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "Hello, World![FROM DOCKER]"


if __name__ == '__main__':
    app.run(host="0.0.0.0")

在宿主机中打开浏览器,访问http://127.0.0.1:8000 即可看到下面的内容

到此为止,使用docker容器手动部署flask web应用就完成了。

手动部署肯定不是最好的方式,但是我感觉适合我这种对Linux比较熟悉,但是对docker不是太熟悉的人,后面会继续更新通过DockerFile进行部署的内容!

 

2条评论


dvlee2 用户

11111111111

Macv 博主 回复:dvlee2

2222222