使用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应用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker部署MySQL主从复制的实现

    Docker部署MySQL主从复制的实现

    本文主要介绍了Docker部署MySQL主从复制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-10-10
  • docker-compose部署kafka全过程

    docker-compose部署kafka全过程

    文章介绍了如何使用docker-compose.yaml文件启动容器,并查看和创建Kafka topic,以及监控topic下的数据,作者分享了个人经验,希望对大家有所帮助
    2024-12-12
  • Docker实现镜像优化的实用技巧分享

    Docker实现镜像优化的实用技巧分享

    镜像太大、构建太慢、上传半天,这时是时候掌握一些真正实用的 Docker 镜像优化技巧了,下面小编就带大家从实践角度出发,逐步优化镜像体积,构建速度与运行性能吧
    2026-04-04
  • 如何使用Rancher发布前端服务过程详解

    如何使用Rancher发布前端服务过程详解

    这篇文章主要为大家介绍了如何使用Rancher发布前端服务过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Docker容器应用中,10个要不得的坏习惯

    Docker容器应用中,10个要不得的坏习惯

    这篇文章主要介绍了Docker容器的应用中,10个要不得的坏习惯,帮助大家更好的理解和使用docker,感兴趣的朋友可以了解下
    2020-08-08
  • docker-compose安装jenkins全过程

    docker-compose安装jenkins全过程

    本文详细介绍了如何在服务器上通过Docker安装和配置Jenkins,包括环境准备、安装JDK和Maven、配置环境变量、修改Maven设置、配置docker-compose.yml文件以及如何解决访问403错误等步骤,此外,还涵盖了如何新建流水线任务并配置pipeline脚本
    2024-09-09
  • docker容器中登陆并操作postgresql的实现

    docker容器中登陆并操作postgresql的实现

    本文主要介绍了docker容器中登陆并操作postgresql的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • docker-compose部署nacos 2.2.3的详细过程

    docker-compose部署nacos 2.2.3的详细过程

    这篇文章主要介绍了docker-compose部署nacos 2.2.3的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-11-11
  • 利用Docker容器化部署springboot应用(过程详解)

    利用Docker容器化部署springboot应用(过程详解)

    docker可以帮助我们下载应用镜像,创建并运行镜像的容器,从而快速部署应用,本文给大家介绍利用docker容器化部署springboot应用的过程,感兴趣的朋友跟随小编一起看看吧
    2025-10-10
  • docker修改Docker容器启动配置参数过程

    docker修改Docker容器启动配置参数过程

    本文介绍了两种使Docker容器开机自启的方法,一是修改启动命令,二是修改容器配置文件hostconfig.json中的RestartPolicy为always
    2026-04-04

最新评论