当前位置: 首页 > web >正文

基于Dockerfile 部署一个 Flask 应用

Docker 与 Python:容器化部署应用,实现快速发布与弹性伸缩

以下是一个简单的 Flask 应用

# app.py - 一个简单的Flask应用
from flask import Flask
import osapp = Flask(__name__)@app.route("/")
def hello():env = os.environ.get('FLASK_ENV', "local")print('environ---', os.environ.get('FLASK_ENV', "local"))return "Hello Docker World!" + f"env={env}"@app.route("/health")
def health():return {"status": "healthy"}if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)

同目录下有个 requirements.txt 文件,项目依赖文件

Flask==2.3.3
gunicorn==21.2.0

接下来是 Dockerfile ,这是个构建容器的文件

# 选择基础镜像 -python 3.9 官方镜像
FROM python:3.9-slim# 设置工作目录
WORKDIR /app# 复制依赖文件
COPY requirements.txt .# 安装 Python依赖
RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/# 复制应用代码
COPY . .# 暴露端口
EXPOSE 5000# 定义启动命令
CMD ["python", "app.py"]# 也可以借助 gunicorn 替代 Flask 开发服务器
# CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]

接下来构建镜像

# 构建Docker镜像
docker build -t my-python-app .# 运行容器
docker run -p 5000:5000 my-python-app

然后访问我们的接口

http://123.57.31.157:5000/http://123.57.31.157:5000/health

然后是 docker-compose.yml 方便本地开发

services:web:image: my-python-app:latestports:- "5000:5000"environment:- FLASK_ENV=development
http://www.xdnf.cn/news/17010.html

相关文章:

  • Word怎样转换为PDF
  • 【设计模式】 原则
  • CH32V单片机启用 FPU 速度测试
  • Conda和pip的使用记录
  • stm32FLASH RAM 详解说明
  • Vue 3.0 Composition API:重新定义组件逻辑的组织方式
  • 解决mac在安装nvm过程中可能遇到的一些问题
  • nodejs读写文件
  • 自动驾驶中的传感器技术14——Camera(5)
  • AI Agent开发学习系列 - LangGraph(7): 带有条件判断的Conditional Graph
  • L1、L2正则化的几何解释
  • Redis 通用命令
  • Git、Gitee、GitHub、GitLab完整讲解:从基础到进阶
  • 【BTC】挖矿
  • 编程与数学 03-002 计算机网络 19_网络新技术研究
  • Android 15 中禁用/启用应用的系统级方法
  • GaussDB 约束的使用举例
  • 机器人学中路径规划(Path Planning)和轨迹生成(Trajectory Generation)关系
  • 小智服务器Java安装编译(xinnan-tech)版
  • 麦肯锡咨询公司PEI经典面试题目汇总
  • gbase8s 常见表约束介绍
  • 18-C语言:第19天笔记
  • 知识随记-----Qt 实战教程:使用 QNetworkAccessManager 发送 HTTP POST
  • Ubuntu系统VScode实现opencv(c++)图像翻转和旋转
  • Java语言核心特性全解析:从面向对象到跨平台原理
  • 【学习笔记】Java并发编程的艺术——第1章 并发编程的挑战
  • 前端开发(HTML,CSS,VUE,JS)从入门到精通!第三天(JavaScript)
  • Maven - 并行安全无重复打包构建原理揭秘
  • sqli-labs通关笔记-第28a关GET字符注入(关键字过滤绕过 手注法)
  • 如何设置主机IP地址