iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >使用Docker开发python Web应用的案例
  • 664
分享到

使用Docker开发python Web应用的案例

2023-06-07 16:06:01 664人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

小编给大家分享一下使用Docker开发python WEB应用的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!本文中,我将尝试展示用Docker开发Pytho

小编给大家分享一下使用Docker开发python WEB应用的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

本文中,我将尝试展示用Docker开发Python应用(主要是Web应用)的可行方法。虽然我本人专注于Python的flask框架,但本文目的是演示如何通过Docker更好地开发和共享应用程序,(由任何语言和框架开发的应用程序)。Docker通过封装依赖项,大大减少了开发环境和正式产品的差距。

大多数python开发人员在开发中使用virtualenv。它提供了一种易用的机制让应用程序使用自己专用的依赖项,这些依赖项可能与在其它应用程序或操作系统存在冲突(尤其是不同的Pyhton版本,还有不同的库版本等等)。个人而言,我对virtualenv一直没有太大兴趣,原因如下:

我经常忘记启用它,或者在切换工程时忘记切换它,这会遇到含糊的出错信息,另人倍感困惑。

它无法提供“纯粹的”隔离,只能是Python级别的隔离(系统库和非python的依赖项仍然会出问题)。

我通常不想在正式产品中运行它,这就意味着在开发环境和正式产品的不一致。

它让人感觉有点“黑客”作法:它是依靠修改脚本和设置新路径实现的。

( 查看 pythonrants的这篇文章 了解更多为什么你可能不想用virtualenv )

那么,怎么做Docker才能变得更好呢?Docker本质上提供了非常轻量化的VMs(在说法上可以称为“容器”),我们可以使用其创建一个高标准隔离并能大大减少失配的开发和产品环境。(如果你不熟悉Docker,却还想学习更多,你可以查看我在爱丁堡技术座谈会上介绍Docker的谈话)。

当我们建立一个小型的可视化Web APP,我自己和Mark Coleman使用这种方法(文档在这)。这(里面)划出了一个基本镜像安装Python 2.7,还有一些Flask管理以及postgresql的内容。我会依据这个镜像去开发一个hello world的Web应用。我假设你是在linux上开发,并且你已经有git,还安装了Docker,MacOS的指令应该非常类似。通过克隆和建立基本镜像开始:

$ docker build – t example _ app .
$ docker run – p 5000 : 5000 – v $( pwd ) / example_app :/ opt / example_app / – i – t example_app

你应当会得到这样的回馈:通过浏览器打开地址localhost:5000,你会看到你的网站正在运行。如果你实在VM或者vagrant中运行,记得打开5000端口。

现在我们运行了web服务器,已经非常接近我们在产品中使用的东西了(我有意的使用Apache来做这点而不是Python默认的web服务器)。我们通过从主机向容器映射的方式向容器中注入代码;也可以在Dockerfile命令行中是用ADD来添加代码,但那样的话当我们队代码进行改动时,每次都需要重新构建容器。

然而,这仍然不是很好 ;开发中我们真的希望使用很大程度上帮助我们调试的Python web服务器。该高兴的是我们不用对Dockerfile进行任何修改。在example_app文件从创建一个run.py文件开始,按照一下内容:

这将启动Python的带调试的web服务器并监听所有连接,我们也能从容器外访问。现在用下列命令重启容器:

$ docker run -p 5000:5000 -v $(pwd)/example_app:/opt/example_app/ -i -t example_app python /opt/example_app/run.py

你能看到网页又运行了。这次我们显式地提供运行的命令(”python /opt/example_app/ryn.py”),它覆盖了Dockerfile中的CMD行的设置。现在如果编辑在主机上的源程序,就能马上看到网页上的改变。

让我们花点时间看看我们的收获:

一个运行在隔离容器中的web应用,容器完全封装了应用的Python依赖项和系统依赖项。

能够使用现有编辑器或IDE开发代码并直接查看变化,就像在本地编辑一样。

比以前更接近正式产品的运行环境。

没有使用virtualenv。

如果你想知道如何以这种方式建立程序发布的途径,可以看看Mark Coleman写的关于前面提到的可视化Web应用的文章。

不幸的是,这一切还不完美。还有下列几个问题:

你可能仍会遇到需要使用virtualenv或其等价解决方案的情况,例如库的操作系统版本与你的程序所需版本间的冲突。

我们还没完全解决数据托管的问题,仍需做某些测试

我假设的“产品”是一个Docker容器,但实际情况常常并非如此而且Docker托管本身也刚刚起步。

尽管如此,我仍然认为这向软件开发的更好未来迈了一大步,大大减轻了部署软件和管理依赖项的痛苦。

以上是“使用Docker开发python Web应用的案例”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网Python频道!

--结束END--

本文标题: 使用Docker开发python Web应用的案例

本文链接: https://www.lsjlt.com/news/249782.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用Docker开发python Web应用的案例
    小编给大家分享一下使用Docker开发python Web应用的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!本文中,我将尝试展示用Docker开发pytho...
    99+
    2023-06-07
  • 关于Web报表FineReport打印的开发应用案例
    报表打印是报表使用和开发过程中经常碰到的问题,这里汇总了关于Web报表开发打印功能的一些典型应用案例,以应用最广泛的FineReport为例。案例一:java直接调用报表打印当java后台定义定时打印的功能...
    99+
    2022-10-18
  • Python 中如何使用 Spring 开发 Web 应用?
    Python 是一种高级编程语言,而 Spring 是一种常用的 Java 框架,两者的结合可以实现高效、可靠的 Web 应用程序开发。本文将介绍如何在 Python 中使用 Spring 框架开发 Web 应用程序,包括以下方面: Sp...
    99+
    2023-11-11
    spring linux api
  • ZooKeeper开发实际应用案例实战
    目录项目背景介绍面临问题如何解决代码讲解数据服务器检索服务器总结附:完整代码数据服务端代码检索服务端代码ZooKeeper入门教程一简介与核心概念 ZooKeeper入门教程二在单机...
    99+
    2022-11-13
  • Web应用开发TypeScript怎么使用
    这篇文章主要介绍“Web应用开发TypeScript怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Web应用开发TypeScript怎么使用”文章能帮助大家解决问题。一、什么是 TypeSc...
    99+
    2023-06-30
  • Web应用开发TypeScript使用详解
    目录一、什么是 TypeScript二、TypeScript 简史三、为什么我们要使用TypeScript?TypeScript的附加功能四、大牛现身说法:五、你可能不知道的Type...
    99+
    2022-11-13
  • 使用Docker Swarm搭建Wordpress的案例
    小编给大家分享一下使用Docker Swarm搭建Wordpress的案例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!使用 Docker Swarm 搭建 Wordpress起因我曾经把 wordpress 搭建在 Vu...
    99+
    2023-06-14
  • Redis在游戏开发中的作用及应用案例
    Redis在游戏开发中的作用及应用案例在游戏开发中,数据的高速读写和实时性是至关重要的。而Redis作为一种高性能的内存数据库,可以有效地解决这些问题。本文将介绍Redis在游戏开发中的作用以及应用案例,并提供相关的代码示例。一、Redis...
    99+
    2023-11-07
    redis 游戏开发 应用案例
  • Web应用开发Servlet 3.0特性的示例分析
    这篇文章给大家分享的是有关Web应用开发Servlet 3.0特性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。异步处理支持Servlet 3.0之前,一个普通Servlet的主要工作流程大致如下:首先...
    99+
    2023-06-17
  • PHP开发缓存的实际应用案例分析
    PHP开发缓存的实际应用案例分析引言:随着互联网的快速发展,网站的访问量大幅增加。为了提高网站的性能和响应速度,开发人员需要使用缓存来减少数据库查询,加快数据访问速度。本文将重点介绍PHP中缓存的实际应用案例,包括数据缓存和页面缓存,并提供...
    99+
    2023-11-07
    缓存 开发 PHP 关键词:
  • WebSocket在实时游戏开发中的应用案例
    引言:随着网络技术的不断发展,实时游戏的需求也日益增长。传统的HTTP协议在实时游戏的场景下往往无法满足即时性和实时性的要求。而WebSocket作为一种新兴的通信协议,在实时游戏开发中得到了广泛应用。本文将以具体的案例和示例代码来探讨We...
    99+
    2023-10-21
    websocket 应用案例 实时游戏
  • 使用PHP和AJAX开发响应式Web应用
    随着移动设备的普及和网速的提升,人们对于Web应用的需求越来越高,尤其是要求可以在多种尺寸的屏幕上流畅运行,同时可以提供丰富的交互体验。为了满足这个需求,Web开发者可以利用多种技术来开发响应式Web应用,其中PHP和AJAX是两个重要的工...
    99+
    2023-05-23
    PHP ajax 响应式设计
  • 如何在IDE中使用Python和npm来开发Web应用?
    在当今互联网时代,Web开发已成为一项非常重要的技能。而Python和npm是两个非常强大的工具,被广泛用于Web应用程序的开发。在本文中,我们将探讨如何在IDE中使用Python和npm来开发Web应用。 一、Python和npm的介绍 ...
    99+
    2023-10-21
    npm path ide
  • 怎么使用Flutter开发简单的Web应用
    本篇内容主要讲解“怎么使用Flutter开发简单的Web应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Flutter开发简单的Web应用”吧!为 W...
    99+
    2022-10-19
  • android 开发 文件读写应用案例分析
    一、基本概念 在Android应用中保存文件,保存的位置有两处 ①手机自带的存储空间,较小(如200M),适合保存一些小文件,Android中保存位置在data/data/应用...
    99+
    2022-06-06
    案例分析 Android
  • Docker部署用Python编写的Web应用的实践
    目录1. 安装 docker2. 编写代码3. 编写 Dockerfile4. 上传镜像5. 修改镜像1. 安装 docker 在 WSL2 中安装 docker https://w...
    99+
    2022-11-12
  • 使用Vuex进行web开发的示例分析
    这篇文章主要介绍使用Vuex进行web开发的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 vuex的概念理解提到vuex,就不能不先提vue.我个人开始尝试学习使用vue...
    99+
    2022-10-19
  • 云开发-web应用中使用数据库
    如何在 web 应用中使用数据库 随着云时代的到来,云开发有着独特的优势相对于传统开发,从数据库而言,cloudbase 提供的云数据库真的很方便,本文就以一个简单的 todolist 小例子来讲解一下如何在 web 应用中使用云...
    99+
    2016-12-11
    云开发-web应用中使用数据库
  • Python中的Web开发框架怎么使用
    这篇文章主要介绍了Python中的Web开发框架怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python中的Web开发框架怎么使用文章都会有所收获,下面我们一起来看看吧。在开始之前,我们先要安装好需要...
    99+
    2023-07-06
  • Python开发加薪利器之Docker的使用实践
    目录1. Docker概述1.1 虚拟机技术VS容器化技术1.2 名词概念2. Docker安装2.1 环境查看2.2 卸载旧的版本2.3 安装必要的包2.4 添加GPG密钥2.6 安装Docker引擎2.7 添加当...
    99+
    2022-06-02
    Python Docker的使用 python开发利器docker
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作