Flask 项目如何使用 Dockerfile 构建最小镜像部署

文章导读
Flask 项目使用 Dockerfile 构建最小镜像部署的核心在于选择轻量级基础镜像(如 python:3.9-slim 或 alpine),合理分层构建以利用缓存,并仅复制必要文件。首先编写 app.py 和 requirements.txt,接着创建 Dockerfile,指定 FROM 镜像,设置 WORKDIR,复制依赖文件并安装,再复制代码,暴露端口,最后通过 docker buil
📋 目录
  1. 基于 Python Flask 的 Docker 镜像构建全流程解析
  2. 使用 Dockerfile 构建 Flask 应用镜像
  3. 【Flask-4】使用 Dockerfile 创建镜像来部署一个基于 Flask 的深度学习项目
  4. 【保姆级】Python 项目 (Flask 网页) 部署到 Docker 的完整过程
  5. FAQ
A A

Flask 项目使用 Dockerfile 构建最小镜像部署的核心在于选择轻量级基础镜像(如 python:3.9-slim 或 alpine),合理分层构建以利用缓存,并仅复制必要文件。首先编写 app.py 和 requirements.txt,接着创建 Dockerfile,指定 FROM 镜像,设置 WORKDIR,复制依赖文件并安装,再复制代码,暴露端口,最后通过 docker build 和 docker run 命令完成构建与运行。此流程能有效减少镜像体积,提升构建速度,并确保环境一致性,适合生产环境部署。

基于 Python Flask 的 Docker 镜像构建全流程解析

基于 Python Flask 的 Docker 镜像构建全流程解析 在容器化部署场景中,Docker 镜像构建是关键环节。本文以 Python Flask 应用为例,系统讲解从代码编写到镜像部署的完整流程。核心组件说明 应用代码结构 Python 复制 from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello from Dockerized Flask App!" if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) 创建 Flask 实例并定义根路由 监听 0.0.0.0 地址确保容器内可访问 使用 5000 端口 (与 Dockerfile 配置一致) 依赖管理文件 text 复制 flask==2.0.1 精确指定 Flask 版本避免兼容性问题 使用--no-cache-dir 优化镜像体积 Dockerfile 配置详解 dockerfile 复制 # 使用官方 Python 基础镜像 FROM python:3.9-slim # 设置工作目录 WORKDIR /app # 复制依赖文件并安装 COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # 复制应用代码 COPY app.py . # 暴露端口 EXPOSE 5000 # 启动命令 CMD ["python", "app.py"] 基础镜像选择:使用 slim 版本减少镜像体积 分层构建:先安装依赖再复制代码,利用 Docker 缓存机制 安全配置:明确指定 CMD 执行方式避免 shell 解析风险 构建与运行流程 镜像构建 bash 复制 docker build -t my-flask-app . -t 参数指定镜像标签 . 表示使用当前目录的 Dockerfile 容器运行 bash 复制 docker run -p 5000:5000 my-flask-app -p 参数映射主机端口到容器端口 运行后访问 http://localhost:5000 验证结果 关键优化点 优化方向实施方法效果 镜像体积优化 使用 slim 基础镜像 减少约 60% 的镜像大小 构建速度优化 分层 COPY 依赖文件 利用缓存加速后续构建 安全加固 避免使用 root 用户运行 降低容器逃逸风险(截至 2026 年 2 月 23 日)

使用 Dockerfile 构建 Flask 应用镜像

使用 Dockerfile 构建 Flask 应用镜像 在容器化部署中,Dockerfile 是定义应用运行环境的核心文件。本文将演示如何将一个简单的 Flask 应用构建成 Docker 镜像,同时支持实时更新代码并在宿主机查看日志,开发环境直接运行和生产环境使用 Gunicorn。一、项目结构与准备 创建项目目录并初始化文件:mkdirflask-app&&cdflask-appmkdirlogstouchDockerfile app.py requirements.txt AI 写代码 bash 1 2 3 最终的目录结构如下:.├── Dockerfile # 应用镜像构建文件├── app.py # Flask 应用核心代码├── requirements.txt # Python 依赖清单└── logs/ # 日志目录 AI 写代码 text 1 2 3 4 5 二、关键文件解析 1. app.py - 简单的 Flask 应用 importloggingimportosfromflaskimportFlaskfromdatetimeimportdatetime app=Flask(__name__)defsetup_logger():log_dir='logs'ifnotos.path.exists(log_dir):os.makedirs(log_dir)log_format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'date_format='%Y-%m-%d %H:%M:%S'file_handler=logging.FileHandler(f'{log_dir}/app.log',encoding='utf-8')file_handler.setLevel(logging.INFO)file_handler.setFormatter(logging.Formatter(log_format,date_format))console_handler=logging.StreamHandler()console_handler.setLevel(logging.INFO)console_handler.setFormatter(logging.Formatter(log_format,date_format))logger=logging.getLogger('flask_app')logger.setLevel(logging.INFO)logger.addHandler(file_handler)logger.addHandler(console_handler)returnlogger logger=setup_logger()@app.route('/')defhello():logger.info(f'收到访问请求 -{datetime.now()}')return'Hello World!'if__name__=='__main__':logger.info('Flask 应用启动')app.run(host='0.0.0.0',port=5000,debug=True)(搜索结果收录于 2025 年 12 月 30 日)

【Flask-4】使用 Dockerfile 创建镜像来部署一个基于 Flask 的深度学习项目

【Flask-4】使用 Dockerfile 创建镜像来部署一个基于 Flask 的深度学习项目 参考链接:使用 Dockerfile 创建镜像来部署一个基于 Flask 的深度学习项目_iQTan 的博客-CSDN 博客_dockerfile flask 容器与镜像的区别 镜像,是一个静态概念,一个镜像由若干只读层 (read-only layer) 构成。容器和镜像一样,也是若干层的叠加,唯一区别是所有只读层的最上面一层,是一层可读可写层,如上图绿色图例所示。Docker 镜像都是只读的,当容器启动时,一个新的可写层加载到镜像的顶部!这一层就是我们通常说的容器层,容器之下的都叫镜像层!容器= 容器镜像 + 可读可写层 1、Dockerfile 文件:# 基于的基础镜像 FROMpython:3.7 # 维护者信息 MAINTAINER******@qq.com # 复制代码到 code 文件夹 COPY. ../code # 设置 code 文件夹是工作目录 WORKDIR/code RUNapt-get update RUNapt-get install -y libgl1-mesa-dev RUNpip install --upgrade pip RUNpip install torch==1.7.1+cu110torchvision==0.8.2+cu110torchaudio==0.7.2-f https://download.pytorch.org/whl/torch_stable.html RUNpip install -r requirements.txt # 申明镜像内服务监听的端口 EXPOSE5000 CMD ["python","test.py"] 一键获取完整项目代码 特别指出:FROM python:3.8.0:python 3.8.0 作为基础镜像 (或父镜像)。COPY: 其用法为 COPY [src] [dest],此处 src 为".",本例即将工作目录下的全部代码拷贝到 dest(镜像下的目录)。WORKDIR: 其用法为 WORKDIR [dir],本例即将本地工作目录设置为 dir 的"/aep-ai-seal-v1-yolov5"。RUN apt-get update: 拉取下来的基础镜像需要更新一下。RUN apt-get install -y xxxxx: 安装项目所需的一些组件。RUN pip install --upgrade pip: 更新 pip,以便后续顺利安装其他组件。RUN pip install torch-xxxx: 加载 YOLOv5 所需的组件 pytorch。RUN pip install -r requirements.txt: 加载镜像所需的库。EXPOSE 5000: 抛出的端口。CMD ["python","run.py"]:python 环境下运行镜像中主程序。2、创建镜像:打开一个终端,进入到工作目录下,输入以下命令进行编译。# docker build -t 镜像名:tag 名 . docker build -t flask:1.0. 一键获取完整项目代码 需要注意,镜像名与 tag 可以根据需要命名,指令后的"."不要遗漏,其表示默认 Dockerfile。3、测试镜像 docker images 一键获取完整项目代码 4、启动镜像 docker run -p 本机映射端口:镜像映射端口 -d --name 启动镜像名称 -e 设置环境变量 镜像名称:镜像版(发布时间是 2022 年 8 月 11 日)

【保姆级】Python 项目 (Flask 网页) 部署到 Docker 的完整过程

【保姆级】Python 项目 (Flask 网页) 部署到 Docker 的完整过程 部署到 docker 1.生成 requirement.txt Flask 网页程序中需要依赖一些 Python 库,为了方便在 docker 上进行安装,所以将需要的库整合到 requirement.txt 中。在终端中进入到项目目录下,执行下面的目录,生成 requirement.txt avascript AI 代码解释 生成的 requirement.txt 如下:这里包含很多 flask 不需要用到的库,咱们把不需要的删除~ 因为我的 flask 网页程序中,只用到了这两个库,因此留下的仅有两个。2.创建 Dockerfile Flask 网页程序放在 Chenge 文件夹中 (前面生成的 requirement.txt 也在 Chenge 文件夹中),将 Chenge 文件夹放到 0714 文件夹中。接着在 0714 文件夹下新建一个 Dockerfile 文件 (和 Chenge 文件夹同级)。什么是 Dockerfile? Dockerfile 是一个文本文件,其内包含了一条条的指令 (Instruction),有了 Dockerfile,就可以创建我们所需要的镜像 编辑 DockerFile 文件 代码语言:javascript AI 代码解释 Dockerfile 里面命令大意是:1、设置 python 版本 2、flask 网页程序目录 3、docker 工作目录 4、安装网页程序执行所需的库 5、执行 python 程序 (网页程序主程序) 3.创建镜像 chenge_image 提醒:将 0714 文件夹上传到服务器 (如果 docker 安装远程服务器) 在终端中进入到 0714 文件夹中,先查看一下当前的镜像 代码语言:javascript AI 代码解释 可以看到当前 docker 有两个镜像,现在我们开始创建网页程序镜像 chenge_image 代码语言:j 代码语言:javascript(消息于 2023 年 5 月 6 日发布)

Flask 项目如何使用 Dockerfile 构建最小镜像部署

FAQ

构建最小镜像应选择什么基础镜像?

建议使用 python:3.9-slim 或 alpine 版本,可减少约 60% 的镜像大小。

Dockerfile 中如何优化构建速度?

分层 COPY 依赖文件,先安装依赖再复制代码,利用 Docker 缓存机制加速后续构建。

Flask 项目如何使用 Dockerfile 构建最小镜像部署

容器运行如何映射端口?

使用 docker run -p 主机端口:容器端口 命令,例如 -p 5000:5000。

如何确保容器内应用可访问?

应用需监听 0.0.0.0 地址,并在 Dockerfile 中使用 EXPOSE 声明端口。