【Python程序开发系列】教你使用Docker部署一个简单的Python应用程序(案例+源码)

这是我的第313篇原创文章。

一、引言

Docker 对于程序员来说,其实和Git差不多,基本上属于一个必备工具。如果你想使用这个工具,你就必须安装这个应用工具,至于在不同操作系统上安装Docker的方式网上有很多教程,这里不做赘述。

- 安装docker
    - 若想在本地windows环境运行,就得在windows中安装docker,分为桌面版和内核版
    - 若想在远程服务器Linux环境运行镜像,就得在Linux中安装docker,分为桌面版和内核版

我在E盘有一个名为docker-test的python项目,docker-test就是这个项目的根文件夹:

图片

docker-test文件下有一个app包,包下面有一个python脚本hello.py,接下来简要说明如何将这个项目使用docker进行部署,运行这个项目(这里就是运行这个脚本)。

图片

这个脚本实现的功能是一个请求百度官网并打印出请求内容。

图片

二、使用Docker部署应用(Windows环境)

2.1 生成requirement.txt

项目应用程序中需要依赖一些Python库,为了方便在docker上进行安装,所以将需要的库整合到requirement.txt中。

在终端中进入到项目目录下,执行下面的命令,生成requirement.txt

pip freeze > requirements.txt

或者安装pipreqs,pip install pipreqs,执行pipreqs .,在docker-test文件下后会生成一个requirements.txt文件

图片

2.2 创建Dockerfile

在docker-test文件夹下新建一个Dockerfile文件,与app文件夹同级,然后编辑Dockerfile文件:

FROM python:3.9.6  # 设置基于的python基础镜像
ADD . E:/docker-test # 将代码程序添加到E:/docker-test文件夹
WORKDIR E:/docker-test # 设置E:/docker-test文件夹是docker工作目录
RUN pip install -r requirements.txt # 安装程序依赖包
CMD ["python", "app/hello.py"] # 执行python项目主程序

2.3 创建镜像

如果要部署到其他服务器,可以先将项目(docker-test文件夹)上传到服务器,然后创建镜像:

docker build -t imagename Dockerfilepath
# docker build -t demo_f:v0 .

默认情况下,Docker镜像存储在Docker引擎的默认存储位置。在Windows上,它通常位于C:\ProgramData\Docker\windowsfilter目录下。在这个目录中,你可以找到以哈希值命名的文件夹,每个文件夹对应一个镜像。在Windows上,如果你使用的是Docker Desktop(Docker for Windows),默认情况下,镜像存储在WSL 2的虚拟机文件系统中。 

命令运行之后本地就会生成一个镜像,在docker desktop里面就可以看到:

图片

内核版需要命令查看:

docker images

图片

接下来可以将上传到服务器,在服务器运行镜像即可;也可以将镜像上传到docker hub,进行拉取镜像,修改镜像等操作

2.4 启动容器

启动容器就是运行镜像,也就是运行项目的主程序

桌面版本直接点击运行:

图片

内核版需要敲命令行:

docker run demo_f:v0

图片

本文详细讲解了python程序部署到docker,一步一截图,超级详细,不会的小伙伴,自觉动手练习!!!!

作者简介:

读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。

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

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

相关文章

每天五分钟深度学习:解决for循环效率慢的关键在于向量化

本文重点 上一节课程中,我们学习了多样本的线性回归模型,但是我们的伪代码实现中使用了大量的for循环,这样代码的问题是效率很低。为了克服这一瓶颈,向量化技术应运而生,成为提升程序执行效率、加速数据处理速度的重要手段。 向量化技术概述 向量化(Vectorization)是…

MySQL-核心知识要点

1、索引的数据结构-Btree BTree的优势: B树的内节点无data,一个节点可以存储更多的K-V对。在构造树时,需要的内节点会更少,那么树的层级也会越低。查询一条数据时,1. 扫描的层级低,扫描过的节点更少&…

最优化方法Python计算:标准型线性规划的轴转操作

标准型线性规划 { minimize c ⊤ x s.t. A x b x ≥ o ( 1 ) \begin{cases} \text{minimize}\quad\boldsymbol{c}^\top\boldsymbol{x}\\ \text{s.t.}\quad\quad\boldsymbol{Ax}\boldsymbol{b}\\ \quad\quad\quad\quad\boldsymbol{x}\geq\boldsymbol{o} \end{cases}\quad\quad…

【netty系列-04】反应堆模式的种类和具体实现

Netty系列整体栏目 内容链接地址【一】深入理解网络通信基本原理和tcp/ip协议https://zhenghuisheng.blog.csdn.net/article/details/136359640【二】深入理解Socket本质和BIOhttps://zhenghuisheng.blog.csdn.net/article/details/136549478【三】深入理解NIO的基本原理和底层…

Vue3认识Vue插件

通常我们向Vue全局添加一些功能时,会采用插件的模式,它有两种编写方式: 对象类型:一个对象,但是必须包含一个install 的函数,该函数会在安装插件时执行;函数类型:一个function,这个函数会在安装插件时自动执行; 插件…

大数据平台之CDH

Clouderas Distribution Including Apache Hadoop (CDH) 是 Cloudera 提供的企业级 Hadoop 发行版,包含了 Hadoop 及其生态系统中的各种组件,并进行了优化和增强,适合在生产环境中使用。以下是 CDH 版本 Hadoop 的详细介绍: 概述…

数字化转型中,数字化如何重塑中小企业发展力?

引言:当前,我国中小微企业数字化转型处于“不平衡、不充分、不规范”阶段,普遍面临“不会转”“不能转”“不敢转”的困境。数字化转型可以帮助企业突破这些困境,实现更大的发展。更进一步,数字化转型是中小企业高质量…

学习笔记——动态路由——IS-IS中间系统到中间系统(基本概念)

二、IS-IS基本概念 1、IS-IS概述 IS-IS是ISO定义的OSI协议栈中的无连接网络服务(ConnectionLess Network Service,CLNS)的一部分,IS-IS是一种链路状态路由协议,IS-IS与OSPF在许多方面非常相似,例如,运行IS-IS协议的直…

4.BeanFactory

可以看出BeanFactory表面上只有getBean相关的方法。 实际上控制反转、基本的依赖注入、Bean的生命周期的各种功能,都是由BeanFactory的实现类来实现的。(DefaultListableBeanFactory) DefaultListableBeanFactory管理单例对象DefaultSinglet…

压缩和混淆

随着Js文件体积的增大和前后端交互增多,为了加快http传输速度并提高接口的安全性,出现了很多的压缩工具和混淆加密工具。 **代码压缩:**在对用户体验造成影响的因素中,最重要的是“网页打开速度”,即资源加载速度和页…

杨万里,诚斋体的开创者

杨万里,字廷秀,号诚斋,生于南宋绍兴元年(公元1127年),卒于南宋庆元二年(公元1206年),享年79岁。在中国古代文学的璀璨星河中,南宋诗人杨万里以其清新脱俗、贴…

C#面:现有一个整数number,请写一个方法判断这个整数是否是2的N次方

要判断一个整数是否是2的N次方,可以使用位运算来实现。一个整数如果是2的N次方,那么它的二进制表示中只有一位是1,其余位都是0。可以通过将这个整数与它减去1的结果进行按位与运算,如果结果为0,则说明这个整数是2的N次…

Android- Framework 非Root权限实现修改hosts

一、背景 修改system/etc/hosts,需要具备root权限,而且remount后,才能修改,本文介绍非root状态下修改system/etc/hosts方案。 环境:高通 Android 13 二、方案 非root,system/etc/hosts只有只读权限&…

机器学习python实践——关于管道模型Pipeline和网格搜索GridSearchCV的一些个人思考

最近在利用python跟着指导书进行机器学习的实践,在实践中使用到了Pipeline类方法和GridSearchCV类方法,并且使用过程中发现了一些问题,所以本文主要想记录并分享一下个人对于这两种类方法的思考,如果有误,请见谅&#…

【微服务】微服务之Feign 与 Ribbon

文章目录 强烈推荐引言优点Feign示例什么是Ribbon?Ribbon 的优点Netflix Feign 和 Ribbon整合Feign 与 Ribbon 的关系Feign 与 Ribbon 结合使用的示例配置文件(application.yml)说明: Feign 与 Ribbon 结合使用的应用场景1. 动态服…

物联网的技术和应用有哪些?

随着科技的飞速发展,物联网已经成为连接世界的重要纽带,塑造着我们未来的生活。我们一起深入探索物联网的前沿技术和前瞻性应用,一窥未来的可能性。 获取物联网解决方案,YesPMP平台一站式物联网开发服务。 提示:智慧家…

(2024)docker-compose实战 (3)部署mysql

前言 本次仅搭建单一的mysql服务.如果不确定镜像的配置文件目录, 可以通过 docker inspect 镜像名 来查看具体的配置信息.MYSQL_ROOT_HOST: % 该语句可以允许mysql进行远程连接.使用docker-compose.yaml时, 请自行去除注释. 目录结构 web/ /web/目录 | ├─ mysql/…

Python后端学习路线

学习Python后端开发框架是一个系统的过程,比较推荐的学习路线如下(假设已经具备Python和MySQL基础,但是对于后端框架不熟悉): 1. 复习并深化Python基础知识 数据结构与算法:列表、字典、集合、元组等。面…

图形的搭建

例一: 输入描述: 多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。 输出描述: 针对每行输入,输出用“*”组成的X形图案。 示例一&…

Java微服务架构设计与实现详解

Java微服务架构设计与实现详解 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java微服务架构的设计与实现,帮助您理解如何利用J…