使用Docker容器化Flask应用的简单示例

 更新时间:2025年09月17日 09:26:21   作者:咧咧小侠  
在当今的软件开发中,容器化技术已经变得不可或缺,Docker 作为容器化领域的佼佼者,为开发者提供了一种高效、便捷的方式来部署和运行应用程序,本文将通过一个简单的 Flask 应用示例,展示如何使用 Docker 将 Python 应用程序容器化,需要的朋友可以参考下

在当今的软件开发中,容器化技术已经变得不可或缺。Docker 作为容器化领域的佼佼者,为开发者提供了一种高效、便捷的方式来部署和运行应用程序。本文将通过一个简单的 Flask 应用示例,展示如何使用 Docker 将 Python 应用程序容器化,从而实现快速部署和环境隔离。

一、项目背景

Flask 是一个轻量级的 Python Web 框架,非常适合开发小型到中型的 Web 应用程序。它简单易用,同时提供了足够的灵活性来满足开发者的各种需求。在本示例中,我们将创建一个简单的 Flask 应用,它包含两个路由:一个默认的首页和一个可以接收用户输入名字的路由。

二、项目结构

我们的项目结构如下:

neural-api/
├── src/
│   └── main.py
├── requirements.txt
└── Dockerfile
  • src/main.py 是我们的 Flask 应用代码。
  • requirements.txt 列出了应用所需的 Python 依赖。
  • Dockerfile 是 Docker 镜像构建的配置文件。

三、Flask 应用代码

main.py

# 导入 Flask 模块
from flask import Flask, request

# 创建 Flask 应用实例
app = Flask(__name__)

# 定义默认路由(首页)
@app.route('/')
def home():
    return '<h1>Welcome to My Flask App!</h1>'

# 定义一个路由,接收用户输入的名字
@app.route('/hello', methods=['GET', 'POST'])
def hello():
    if request.method == 'POST':
        # 如果是 POST 请求,从表单中获取名字
        name = request.form.get('name')
    else:
        # 如果是 GET 请求,从查询参数中获取名字
        name = request.args.get('name', 'Guest')

    return f'<h1>Hello, {name}!</h1>'

# 启动 Flask 应用
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)  # 监听所有网络接口的 5000 端口

requirements.txt

flask

四、Dockerfile 配置

Dockerfile 是构建 Docker 镜像的核心配置文件。它定义了如何从基础镜像开始,逐步构建出最终的应用镜像。我们的 Dockerfile 如下:

# 使用 Python 3.9 作为基础镜像
FROM python:3.9

# 设置工作目录
WORKDIR /neural-api

# 将 requirements.txt 文件复制到工作目录
COPY requirements.txt .

# 将 src 目录复制到工作目录下的 src 目录
COPY ./src ./src

# 安装 Python 依赖
RUN pip install -r requirements.txt

# 定义容器启动时运行的命令
CMD ["python", "./src/main.py"]

Dockerfile 解释

  1. FROM python:3.9:指定基础镜像为 Python 3.9。Docker 会从 Docker Hub 拉取这个镜像。
  2. WORKDIR /neural-api:设置工作目录为 /neural-api。后续的命令都会在这个目录下执行。
  3. COPY requirements.txt .:将 requirements.txt 文件复制到工作目录。
  4. COPY ./src ./src:将本地的 src 目录复制到容器的 /neural-api/src 目录。
  5. RUN pip install -r requirements.txt:安装 requirements.txt 中列出的 Python 依赖。
  6. CMD ["python", "./src/main.py"]:定义容器启动时运行的命令,启动 Flask 应用。

五、构建和运行 Docker 镜像

1. 构建镜像

在项目根目录下运行以下命令来构建 Docker 镜像:

docker build -t neural-api:latest .
  • -t neural-api:latest:指定镜像的名称和标签。
  • .:表示当前目录(包含 Dockerfile 和代码)。

2. 运行容器

构建完成后,运行以下命令启动容器:

docker run -d -p 5000:5000 --name my_flask_app neural-api:latest

  • -d:以后台模式运行容器。
  • -p 5000:5000:将容器的 5000 端口映射到宿主机的 5000 端口。
  • --name my_flask_app:为容器指定一个名称。
  • neural-api:latest:使用刚刚构建的镜像运行容器。

3. 访问应用

打开浏览器,访问 http://localhost:5000,你会看到欢迎信息:

Welcome to My Flask App!

访问 http://localhost:5000/hello?name=xiaoxiao,你会看到:

Hello, xiaoxiao!

六、总结

通过本文的示例,我们展示了如何使用 Docker 容器化一个简单的 Flask 应用。Docker 提供了一种简单、高效的方式来部署和运行应用程序,同时确保环境的一致性和隔离性。无论是在开发、测试还是生产环境中,Docker 都能为你的应用提供强大的支持。

希望这个示例能帮助你更好地理解和使用 Docker。如果你有任何问题或建议,欢迎在评论区留言。

七、Docker 常用命令

为了帮助你更好地使用 Docker,以下是一些常用的 Docker 命令:

1. 镜像相关命令

拉取镜像

docker pull [镜像名]:[标签]

示例:docker pull python:3.9

列出本地镜像

docker images

构建镜像

docker build -t [镜像名]:[标签] .

示例:docker build -t neural-api:latest .

删除镜像

docker rmi [镜像ID或镜像名]

2. 容器相关命令

运行容器

docker run -d -p [宿主机端口]:[容器端口] --name [容器名] [镜像名]

示例:docker run -d -p 5000:5000 --name my_flask_app neural-api:latest

列出正在运行的容器

docker ps

列出所有容器(包括停止的)

docker ps -a

停止容器

docker stop [容器ID或容器名]

删除容器

docker rm [容器ID或容器名]

进入正在运行的容器

docker exec -it [容器ID或容器名] /bin/bash

3. 其他命令

查看容器日志

docker logs [容器ID或容器名]

清理未使用的镜像和容器

docker system prune

登录 Docker Hub

docker login

推送镜像到 Docker Hub

docker push [用户名]/[镜像名]:[标签]

这些命令涵盖了 Docker 的基本操作,可以帮助你在日常开发中高效地使用 Docker。希望这些命令对你有所帮助!

到此这篇关于使用Docker容器化Flask应用的简单示例的文章就介绍到这了,更多相关Docker容器化Flask应用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Alpine Docker 容器中安装包缓存与 C/C++ 运行问题的经验

    Alpine Docker 容器中安装包缓存与 C/C++ 运行问题的经验

    本文介绍了在Docker中使用Alpine镜像部署C/C++应用的优化方法,今天就来分享下我在Alpine容器中解决安装包缓存与C/C++程序运行问题的经验,感兴趣的朋友一起看看吧
    2025-06-06
  • 使用docker搭建jenkins自动化工具的实现

    使用docker搭建jenkins自动化工具的实现

    大家在工作中,应该都有使用过jenkins 自动化打包或发布,本文主要介绍了使用docker搭建jenkins自动化工具的实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Docker exec 的实现原理介绍

    Docker exec 的实现原理介绍

    这篇文章主要介绍了Docker exec的实现原理,详细解读了docker exec这个操作背后,Linux Namespace更具体的工作原理,这种通过操作系统进程相关的知识,逐步剖析Docker容器的方法,需要的朋友可以参考一下
    2022-04-04
  • Docker Compose部署Nginx的方法步骤

    Docker Compose部署Nginx的方法步骤

    本文主要介绍了Docker Compose部署Nginx的方法步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Docker核心组件之联合文件系统详解

    Docker核心组件之联合文件系统详解

    这篇文章主要为大家介绍了Docker核心组件之联合文件系统详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • Docker部署Nginx设置环境变量的实现步骤

    Docker部署Nginx设置环境变量的实现步骤

    本文主要介绍了Docker部署Nginx设置环境变量的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Docker容器实现MySQL多源复制场景分析

    Docker容器实现MySQL多源复制场景分析

    这篇文章主要介绍了Docker容器实现MySQL多源复制,通过本文学习可以掌握多源复制的好处,通过使用场景分析给大家介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 使用DockerFile构建镜像与镜像上传的实现步骤

    使用DockerFile构建镜像与镜像上传的实现步骤

    本文主要介绍了使用DockerFile构建镜像与镜像上传的实现步骤,使用Dockerfile好处是自动化构建,确保环境的一致性和可重复性,跟踪构建过程的演化等,文中通过图文讲解的非常详细,需要的朋友可以参考下
    2024-02-02
  • 详解docker 允许主机ssh连接到docker容器中

    详解docker 允许主机ssh连接到docker容器中

    本篇文章主要介绍了详解docker 允许主机ssh到docker容器中,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • docker容器的几种存储详解

    docker容器的几种存储详解

    本文主要介绍了docker容器的几种存储方式,主要介绍了3种,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08

最新评论