人生苦短,我用Python+Docker

今天用一个简单的例子,介绍下如何使用Docker进行Python部署。

前期准备

  1. 本地需要有Python环境;

  2. 一个Linux的服务器并已经装好Docker ;

  3. 能把代码上传到服务端的工具。

本文的本地环境是Win10+Python3.12,服务器使用Ubuntu的云服务器。

创建Python应用

创建一个新的目录,并在其中创建 main.py 文件(以FastAPI项目为例),内容如下:

创建 requirements.txt 文件

列出应用程序所需的依赖项。

在同一目录下创建一个 requirements.txt 文件,内容如下:

FastAPI项目依赖需要安装的两个第三方模块。

编写 Dockerfile

Dockerfile 是一个包含一系列指令的文本文件,这些指令定义了如何构建 Docker 镜像。

它可以被认为是 Docker 镜像的蓝图,详细描述了镜像应该包含的内容、如何配置、以及如何运行。

dockerfile里的内容可以这样去理解:

  1. 指定Python的运行环境;

  2. 把本地的 requirements.txt 和程序代码拷贝进 Docker 镜像;

  3. Docker里面把依赖的第三方模块安装好;

  4. 使用命令启动/运行应用程序。

构建 Docker 镜像

打开终端,导航到包含上述文件的目录,运行以下命令来构建 Docker 镜像:

如果能使用上面的命令成功build完成,则说明编写的dockerfile是没有大问题的。

到这一步,你的Docker镜像就打好了,接下来就可以部署了..

上传项目文件到服务器

代码 + requirement.txt + dockerfile上传到服务端:

然后服务器端,启动容器:

访问应用程序

以上操作都完成后,就可以在外网访问你的Python应用程序了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/373517.html

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

相关文章

springboot通江银耳销售管理系统-计算机毕业设计源码15998

摘要 随着人们健康意识的增强,银耳这种传统的中药食材备受关注。而通江银耳是四川省通江县特产,中国国家地理标志产品。四川省通江县是银耳的发源地,中国银耳之乡,通江银耳因主产于此而得名,以其独到的质厚、肉嫩、易炖…

Objective-C 中的 isa 不再是简单的结构体指针

了解 Objective-C 中的 isa 指针内存结构 在 Objective-C 中,isa 指针是对象和类之间的重要桥梁。它不仅帮助运行时系统识别对象的类型,还参与了一些内存和性能优化。本文将深入讲解 isa 指针的内存结构,包括其在早期和现代实现中的演变。 …

彩虹小插画:成都亚恒丰创教育科技有限公司

彩虹小插画:色彩斑斓的梦幻世界 在繁忙的生活节奏中,总有一抹温柔的色彩能悄然触动心弦,那就是彩虹小插画带来的梦幻与宁静。彩虹,这一自然界的奇迹,被艺术家们巧妙地融入小巧精致的插画之中,不仅捕捉了瞬…

海外金融机构银行保险证券数字化转型营销销售数字化成功案例讲师培训师讲授开户销售营销客户AI人工智能创新思维

金融机构需要数字营销的主要原因 数字银行、直接存款和移动网络的兴起让客户无需前往当地分行即可轻松办理银行业务。这些举措不仅提升了用户体验,也迫使银行向数字化世界迈进。 金融服务公司需要在数字营销渠道上保持稳固的地位,以免落后于大型机构。…

man手册的安装和使用

man手册 - HQ 文章目录 man手册 - HQ[toc]man手册的使用Linux man中文手册安装man中文手册通过安装包安装通过apt安装 配置man中文手册README使用说明配置步骤 man手册的使用 首先man分为八个目录,每个目录用一个数字表示 1.可执行程序2.系统调用3.库函数4.特殊文…

2024亚太杯中文赛数学建模B题word+PDF+代码

2024年第十四届亚太地区大学生数学建模竞赛(中文赛项)B题洪水灾害的数据分析与预测:建立指标相关性与多重共线性分析模型、洪水风险分层与预警评价模型、洪水发生概率的非线性预测优化模型,以及大规模样本预测与分布特征分析模型 …

[Linux]安装+使用虚拟机

首先下载(提取码 : ssjf)虚拟机(应该是必须要下载17的了 , 我刚开始下载了15,16的在解决了不兼容的问题后频繁出现蓝屏的 ) 刚开始我遇见了 小问题 --》 在查看了以下两篇blog就解决了 虚拟机无法打开,…

防火墙安全策略用户认证综合实验

基础配置 1,交换机配置(LSW5) 划分vlan10和vlan20,将g0/0/1与与防火墙化为trunk干道,使用防火墙路由模式(子接口),g0/0/2和g0/0/3化为access链路,分别连接生产区&#xf…

nginx的重定向(rewrite)

1、location 匹配 location匹配的就是后面的URL,对访问的路径做访问控制或者代理转发 共有三个匹配:精确匹配、正则匹配、一般配 a、精确匹配 格式:location/ 对字符串进行完全匹配,必须完全合 c、正则匹配 ^~:前…

【ARMv8/v9 GIC 系列 5.6 -- GIC 超优先级中断详细介绍】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 Interrupt superpriority超优先级中断的特性和应用Physical interface interrupt signalsPhysical Group 1 Non-NMI for Current Security StatePhysical Group 1 for Other Security State, or a Group 0 Non-NMIPhysical Group 1 …

微软发布Win11 21H2七月更新补丁KB5040431,快来体验!

系统之家于7月10日发出最新报道,微软为Win11 21H2用户发布了七月的安全更新补丁KB5040431。用户升级系统后,会发现版本号升至22000.3079。此次更新针对远程桌面MultiPoint Server在争用条件会导致服务停止响应等多个问题进行修复。接下来跟随小编看看此次…

Python 中创建当前日期和时间的文件名技巧详解

概要 在日常开发中,经常需要创建带有当前日期和时间的文件名,以便进行日志记录、数据备份或版本控制等操作。Python 提供了丰富的库和函数,可以方便地获取当前日期和时间,并将其格式化为字符串,用于生成文件名。本文将详细介绍如何使用 Python 创建带有当前日期和时间的文…

使用ifconfig命令获取当前服务器的内网IP地址

如何使用ifconfig命令获取当前服务器的内网IP地址呢? ifconfig eth0 | grep inet | awk {print $2}

汇川CodeSysPLC教程03-2-14 与HMI通信

硬件连接 PLC与HMI连接采用何种连接方式,通常是参考双方支持哪些接口。PLC(可编程逻辑控制器)与HMI(人机界面)之间的通讯方式主要有以下几种: 串行通讯(Serial Communication)&…

基于ARM Cortex-M3单片机研发的国产指纹芯片 - P1032BF1

智能指纹锁的核心部件:主板、离合器、指纹采集器、密码技术、微处理器(CPU)、智能应急钥匙。作为指纹锁来说,重要的应该是指纹芯片。指纹锁是通过电子部件及机械部件的精密组合而生产出的安全产品。指纹锁的本质无非是安全、便捷、…

深入理解 Java 中的 try with resources

一、摘要 try-with-resources是 JDK 7 中引入的一个新的异常处理机制,它能让开发人员不用显式的释放try-catch语句块中使用的资源。 比如,我们以文件资源拷贝为示例,大家所熟悉的try-catch-finally写法如下: public class Reso…

看到指针就头疼?这篇文章让你对指针有更全面的了解!

文章目录 1.什么是指针2.指针和指针类型2.1 指针-整数2.2 指针的解引用 3.野指针3.1为什么会有野指针3.2 如何规避野指针 4.指针运算4.1 指针-整数4.2 指针减指针4.3 指针的关系运算 5.指针与数组6.二级指针7.指针数组 1.什么是指针 指针的两个要点 1.指针是内存中的一个最小单…

(HAL)stm32f407+freertos通过usb驱动移远4G模块-EC600U

概述 本篇文章主要介绍: 如何使用STM32CubeMX创建stm32F407+freertos+usb host的基础工程。USB-HOST-CDC驱动运行过程。如何根据4G模块的具体信息修改usb相关代码。MCU如何通过usb与4G模块通信,收发数据。调试过程中遇到的问题以及解决办法。 整个过程中在网上搜罗了很多参考…

suricata7 rule加载(三)加载options

suricata7.0.5 加载options (msg:“HTTP Request Example”; flow:established,to_server; http.method; content:“POST”; http.uri; content:“query.php”; bsize:>9; http.protocol; content:“HTTP/1.1”; bsize:8; http.host; content:“360”; bsize:>3; class…