如何把Flask应用程序部署到Docker中

简介: 通过一步一步的解释说明,完整的把一个Flask应用程序部署到Docker中

什么是Docker

Docker 是一种容器化工具,可以更轻松地使用容器创建、部署和运行应用程序。

这个不是本文的重点,具体概念可以找一下相关的文章。

如何配置项目

项目的目录结构

创建一个flask-docker的应用,应用程序的目录结构如下:

**flask-docker**
├── app.py
├── Dockerfile
├── requirements.txt

文件内容说明

app.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello world! Flask  Docker!!'


if __name__ == "__main__":
    app.run(debug=True)

现在,直接在命令行运行python app.py来测试这个 Flask的hello world 应用程序

python app.py

我们应该会得到类似于下面的输出结果:

* Serving Flask app 'app' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 

Dockerfile内容:

#使用的基础镜像
FROM python:3.8.10
#设置工作目录
WORKDIR /app
#复制requirements.txt
COPY requirements.txt requirements.txt
#安装依赖包
RUN pip install -r requirements.txt
#复制当前目录下的内容到docker中
COPY . .
#启动命令
ENTRYPOINT [ "python", "-m" , "flask",  "--app","app.py", "run", "--host=0.0.0.0","--port=8000"]

Dockerfile的基本内容,具体的解释已经在文件中,这里就不多说了

如何构建 Docker 镜像

接下来,就是构建Docker镜像。主要使用“docker build”命令,具体如下。

docker build --tag flask-docker .

如何查看镜像

通过“docker images” 可以查看所有的镜像,具体如下:

docker images

命令执行后,输出如下所示:

REPOSITORY      TAG       IMAGE ID       CREATED             SIZE
flask-docker   latest    cd52b70b361a   About an hour ago   912MB
python          3.8.10     587b1bc803b3   7 months ago        885MB

如何运行容器

接下来就可以使用docker run命令,运行image。

docker run --name flask-docker-v1 -dit -p 8000:8000  flask-docker:latest

运行结束后,可以通过http://localhost:8000进行验证

如何查看容器

我们可以使用“docker ps"命令来查看当前有哪些容器在运行,具体命令如下:

docker ps

输出如下:

CONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS         PORTS                    NAMES
a173935297cd   flask-docker   "python -m flask ru…"   5 minutes ago   Up 5 minutes   0.0.0.0:8000->8000/tcp   good_wescoff

如何停止容器

要停止当前正在运行的容器,我们可以执行“docker stop"命令,具体命令如下:

docker stop <container-id>

如何删除容器

docker rm <container-id>

到此结束!!!

相关文章
|
5天前
|
消息中间件 监控 RocketMQ
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
151 91
|
6天前
|
存储 NoSQL Redis
Docker 部署 Redis
在使用 Docker 部署 Redis 时,为实现数据持久化,需正确挂载容器内的数据目录到宿主机。推荐命令如下: ``` docker run -d --name redis -v /mnt/data/redis:/data -p 6379:6379 redis ``` 该命令将宿主机的 `/mnt/data/redis` 目录挂载到容器的 `/data` 目录,确保 Redis 数据持久化。此路径更通用,适合大多数场景。避免使用不匹配的挂载路径,如 `/var/lib/redis` 或 `/mnt/data/redis` 到非默认目录,以防止数据无法正确持久化。
|
13天前
|
JavaScript 前端开发 Docker
如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
通过这些步骤,可以确保您的Next.js应用在多核服务器上高效运行,并且在Docker环境中实现高效的容器化管理。
72 44
|
21天前
|
存储 关系型数据库 MySQL
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
|
25天前
|
SQL Java Maven
docker部署apollo
docker部署apollo步骤
|
9月前
|
Ubuntu Docker Python
部署你的flask应用到docker
部署你的flask应用到docker
221 0
|
Linux Docker Python
centos 启动停止docker,并部署 flask 容器化应用
centos 启动停止docker,并部署 flask 容器化应用
123 0
|
API 网络安全 Docker
docker 部署flask&matplotlib应用
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。Flask是一个使用 Python 编写的轻量级 Web 应用框架。本文介绍通过Dockerfile生成镜像,对外部署通过API接口的方式调用绘图服务。
928 0
docker 部署flask&matplotlib应用
|
Ubuntu 安全 应用服务中间件
部署 Flask 应用
部署 Flask 应用
870 0
|
3月前
|
JSON 前端开发 API
使用Python和Flask构建简易Web API
使用Python和Flask构建简易Web API
175 3