我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么用Docker作为Python的开发环境

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么用Docker作为Python的开发环境

这篇文章主要讲解了“怎么用Docker作为Python的开发环境”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Docker作为Python的开发环境”吧!

本文中,我将尝试展示用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的指令应该非常类似。通过克隆和建立基本镜像开始:

$ git clone https://github.com/mrmrcoleman/python_webapp  $ docker build -t python_webapp .

现在,我们需要为容器中添加一些代码并详细写明。我们打算新建一个仅仅指向Docker镜像的项目来完成这项工作,而不是直接修改之前的项目。

创建一个具有下列结构的新项目:

├── Dockerfile   ├── example_app   │   ├── app   │   │   ├── __init__.py   │   │   └── views.py   │   └── __init__.py   ├── example_app.wsgi

或者克隆该地址的示例项目: https://github.com/amouat/example_app.git

在example_app/app/_init_.py中写入:

from flask import Flask     app = Flask(__name__)  from app import views

使另一个_init_.py为空。在views.py中写入:

from app import app     @app.route('/')  @app.route('/index')  def index():      return "Hello, World!"

以上就是我们的一个hello world应用的最小flask版本。我在 这个教程中也使用过类似的代码,所以如果你刚刚接触Flask或者Python,你可以根据上述提到的教程,使用Docker而不是virtualenv继续学习。

为了使之运行在Docker容器内部,我们还需要做一些操作。在我们的实例Apache服务器中,example_app.wsgi文件包含了连接Python代码和web服务器的指令。该文件应当包含下列内容:

import site  site.addsitedir('/opt/example_app/')  from app import app as application

最终,我们需要一个Dockerfile来构建容器并运行容器。在我们的实例中,它看起来是这样的:

FROM python_webapp     MAINTAINER amouat     ADD example_app.wsgi /var/www/flaskapp/flaskapp.wsgi  CMD service apache2 start && tail -F /var/log/apache2/error.log

ADD那行为启动WSGI注入了一些代码。CMD那行在启动容器,启动apache web服务器时获取任何可能的错误信息,并将其发送至stdout。

如果你下列操作:

$ 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文件开始,按照一下内容:

!flask/bin/python  from app import app  app.run(debug = True, host='0.0.0.0')

这将启动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的开发环境”的内容了,经过本文的学习后,相信大家对怎么用Docker作为Python的开发环境这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么用Docker作为Python的开发环境

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

下载Word文档

猜你喜欢

怎么用Docker作为Python的开发环境

这篇文章主要讲解了“怎么用Docker作为Python的开发环境”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Docker作为Python的开发环境”吧!本文中,我将尝试展示用Dock
2023-06-17

docker怎么搭建python开发环境

要搭建Python开发环境,可以使用Docker来进行部署。以下是一些步骤来设置Docker中的Python开发环境:1. 首先,安装Docker并确保它已成功安装在您的系统中。2. 创建一个Dockerfile,该文件用于定义构建镜像的配
2023-08-18

将Emacs作为Python集成开发环境

Python是我很喜欢的一种编程语言,而Emacs则是编辑器中的佼佼者。Emacs本身提供了python-mode,输入M-x python-mode,就可以进入python模式。相应地,会在菜单栏出现Python菜单。当然,一般来讲,如果
2023-01-31

docker怎么部署php开发环境

要部署PHP开发环境,可以使用Docker来创建一个容器化的PHP开发环境。以下是一些步骤:安装Docker:首先,你需要在你的机器上安装Docker。你可以在Docker官方网站上找到适合你的操作系统的安装包,并按照说明进行安装。创建一个
2023-10-23

docker怎么搭建php开发环境

要搭建PHP开发环境,可以使用Docker来快速部署。以下是基本的步骤:1. 安装Docker:根据你的操作系统,安装适合的Docker版本。可以在Docker官方网站上找到相关的安装指南。2. 创建Dockerfile:在项目根目录下创建
2023-08-18

docker怎么搭建java开发环境

要搭建Java开发环境,可以使用Docker容器来快速部署和管理开发环境。以下是一些步骤:下载并安装Docker:首先需要在你的机器上安装Docker。可以到Docker官网(https://docs.docker.com/get-dock
docker怎么搭建java开发环境
2024-04-08

Docker在PHP项目开发环境中怎么用

这篇文章将为大家详细讲解有关Docker在PHP项目开发环境中怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本篇文章给大家分享让人心动的Docker在PHP项目开发环境中的应用有一定的参考价值,有需
2023-06-15

Windows下怎么运用Docker部署Node.js开发环境

这篇文章主要讲解了“Windows下怎么运用Docker部署Node.js开发环境”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Windows下怎么运用Docker部署Node.js开发环境
2023-06-17

怎么用VScode配置Python开发环境

本篇内容介绍了“怎么用VScode配置Python开发环境”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!软件准备首先,我们必须先下载好Pyt
2023-07-05

使用PhpStorm和Docker怎么搭建一个开发环境

今天就跟大家聊聊有关使用PhpStorm和Docker怎么搭建一个开发环境,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。第一步:使用 dockerfile 定制一个 PHP 镜像接手
2023-06-15

怎么用Eclipse+Pydev配置Python开发环境

本篇内容主要讲解“怎么用Eclipse+Pydev配置Python开发环境”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Eclipse+Pydev配置Python开发环境”吧!之前有人问
2023-06-17

vscode怎么配置python开发环境

要在VSCode中配置Python开发环境,您可以按照以下步骤进行操作:安装Python:首先确保您已在计算机上安装了Python。您可以从Python官方网站(https://www.python.org/downloads/)下载最新版
vscode怎么配置python开发环境
2024-03-15

CentOS中怎么搭建Python开发环境

今天就跟大家聊聊有关CentOS中怎么搭建Python开发环境,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、Python升级查看Python版本python -V Python
2023-06-17

怎么在Mac上通过docker配置PHP开发环境

这篇文章主要介绍怎么在Mac上通过docker配置PHP开发环境,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用docker-compose配置开发环境一般一个基本的PHP开发环境包括PHP、PHP-FPM、WEB
2023-06-15

使用PyCharm虚拟环境管理Python开发环境的技巧

PyCharm是专为Python开发而设计的一款强大的集成开发环境,它提供了许多实用的技巧和功能来提高开发效率。其中,利用虚拟环境管理Python开发环境是非常重要的一项技巧。通过虚拟环境,我们可以在同一台机器上管理多个项目的依赖包,避免版
使用PyCharm虚拟环境管理Python开发环境的技巧
2024-02-25

10个好用的Python集成开发环境!

  Python IDE工具是每个Python工程师必须使用的开发工具,选择正确的编辑器对Python编程效率的影响是非常大的,因此选择合适的Python开发工具十分重要,以下是通过长期实践发掘的好用的Python IDE,它们功能丰富,性
2023-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录