基于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.pswp.cn/news/917412.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DFT设计中的不同阶段介绍

在DFT(Design for Test,可测试性设计)软件开发中,针对设计检测的完整流程通常包含Setup(设置)、Analysis(分析)、Insertion(插入)和Verification(…

自动化测试准备工作:概念篇

自动化 什么是自动化? 超市的自动闸门,不需要手动的开门关门生活中的自动动化案例有效的减少了人力的消耗,同时也提高了生活的质量。 软件自动化测试同理,通过编写自动化测试程序(减少人力和时间的消耗,提高软件的…

每日主题切换网页:用纯前端技术打造随心情变化的动态界面

🎨 每日主题切换网页:用纯前端技术打造随心情变化的动态界面 项目地址:https://github.com/hhse/daily-theme-switcher 在线演示:https://hhse.github.io/daily-theme-switcher 这里写目录标题🎨 每日主题切换网页&…

TOPSIS(Technique for Order Preference by Similarity to Ideal Solution )简介与简单示例

前言 提醒: 文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。 其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展…

uniapp 富文本rich-text 文本首行缩进和图片居中

1. uniapp 富文本rich-text 文本首行缩进和图片居中 1.1. rich-text 文本首行缩进使用 rich-text 组件渲染html格式的代码,常常因为不能自定义css导致文本不能缩进,以及图片不能居中等问题,这里可以考虑使用js的replace方法,替换…

Apple基础(Xcode③-Singbox Core)

brew install go open ~/.bash_profile export PATH="$PATH:$(go env GOPATH)/bin" 先确保工具链完整 go install github.com/sagernet/gomobile/cmd/gomobile@v0.1.4 go install github.com/sagernet/gomobile/cmd/gobind@v0.1.4 gomobile init -v # 关键:-v …

JVM学习日记(十四)Day14——性能监控与调优(一)

经过前几篇的铺垫,现在开始正式进入调优篇,也是大火实际用的到的和感兴趣的,但是前期的知识积累还是有必要的,所以还对JVM基础没什么了解的,建议还是回看主包的前几篇内容,当然看其他优秀的博主也是可以的。…

使用 Elasticsearch 和 AI 构建智能重复项检测

作者:来自 Elastic Dayananda Srinivas 探索组织如何利用 Elasticsearch 检测和处理贷款或保险申请中的重复项。 Elasticsearch 带来了大量新功能,帮助你为你的使用场景构建最佳搜索方案。深入了解我们的示例 notebooks,开始免费云试用&#…

如何在不依赖 Office 的情况下转换 PDF 为可编辑文档

在日常工作里,我们经常需要处理各种文件格式的转换问题,像Word转PDF或者PDF转Excel这样的需求屡见不鲜。它是一款功能全面的PDF转换工具,能够帮助你轻松应对多种文档处理任务。不仅能够实现PDF与其他格式之间的转换,如Word、Excel…

嵌入式学习笔记-MCU阶段--DAY09

1. oled屏幕的接口IIC应用场合:2.IIC通信原理概念:IIC(Inter-Integrated Circuit)其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司…

解决 Node.js 托管 React 静态资源的跨域问题

在 Node.js 项目中托管 React 打包后的静态资源时,可能会遇到跨域问题(CORS)。以下是几种解决方案: 1. 使用 Express 中间件设置 CORS 头 const express require(express); const path require(path); const app express();// …

【Linux】多路转接之epoll

优化poll进行拷贝的开销poll开销过大将整个 pollfd 数组拷贝到内核态,以便内核检查 fd 是否就绪(从用户态 → 内核态)。内核检查 fd 状态,并填充 revents。将 pollfd 数组从内核态拷贝回用户态,让应用程序可以读取 rev…

下载一个JeecgBoot-master项目 导入idea需要什么操作启动项目

官网:开发环境搭建 | JEECG 文档中心 一般做开发的电脑里都是有的,没有的只能下载了 前端安装 node官网:https://nodejs.org/zh-cnpnpm安装:通过命令 后端安装: jdk17 :https://www.oracle.com/cn/java/technologies/downloads/#java17maven :https://m…

解决 InputStream 只能读取一次问题

是的,InputStream 的一个重要特性是它通常只能被读取一次。这是因为:输入流通常是单向的、顺序访问的数据源很多流(如网络流、文件流)读取后指针就移动了,无法回退有些流(如Socket流)甚至读取后…

数据分析面试题

技都测试 1、请列举5个 Excel 中常用的函数及写法。[ if ] IF(A1>60, "及格", "不及格") —— 若 A1 单元格数值≥60,返回 “及格”,否则返回 “不及格”。IF(B2>100, B2*0.8, B2) —— 若 B2 数值 > 100&#xff0c…

【07】VisionMaster入门到精通——Blob分折

文章目录0 视屏讲解与演示1 案例演示2 参数详解1 运行参数0 视屏讲解与演示 1 案例演示 周长使能查找U型槽 短轴使能查找U型槽 面积筛选区域 当条件不符合是,该模块显示红色,状态为NG 显示二值图像 显示Blob图像 2 参数详解 Blob分折,…

解释 MySQL 中的 EXPLAIN 命令的作用和使用场景

解释 MySQL 中的 EXPLAIN 命令的作用和使用场景 总结性回答 EXPLAIN 是 MySQL 中用于分析 SQL 查询执行计划的命令,它能展示 MySQL 如何执行一个查询,包括使用的索引、表连接顺序、扫描行数等关键信息。主要用于查询性能优化,帮助开发者识别潜…

.env 文件

.env 文件其实就是一个纯文本文件,用来写“环境变量”键值对,格式非常简单 👇✅ .env 文件写法格式:每一行就是一个变量名 值,不要加引号,不要加空格DEEPSEEK_API_KEYsk-xxxxxxxxxxxxxxxxxxxx完整例子&…

机器学习——K 折交叉验证(K-Fold Cross Validation),案例:逻辑回归 交叉寻找最佳惩罚因子C

什么是交叉验证? 交叉验证是一种将原始数据集划分为若干个子集,反复训练和验证模型的策略。 交叉验证(Cross-Validation)适用于你在模型调参(如逻辑回归中的 C) 最常用的:K 折交叉验证&#…

蓝桥杯----串口

(五)、串口1、串口通信简介制定通信的规则,通信双方按照协议规则进行数据收发,将一个设备的数据传送到另一个设备,扩展硬件系统,串口USART有两根通信线Tx、Rx,可同时双向通信,称之为…