使用Docker将Python项目容器化,就是这么简单

这篇具有很好参考价值的文章主要介绍了使用Docker将Python项目容器化,就是这么简单。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker 化您的 Python 应用程序

微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩

这是一个关于 dockerizing python 应用程序的简单教程。

python docker,docker,python,容器

Docker 和 Python——完美的团队

什么是Docker?

Docker 是一个容器化框架,允许您在任何环境中部署和运行应用程序以及操作系统代码。可以把它想象成把你的应用程序放在一个可以在任何地方运输和运行的容器中。

为什么是Docker?

Docker 现在在软件工程行业无处不在。它确保部署过程中的一致性,并且可以让开发人员专注于应用程序开发,而不是被部署所困,从而节省开发人员的时间。

Docker and Python

Python 是现在最流行的编程语言,它在不同行业的采用正在增长。

它易于使用,并以其直观的语法和语言特性消除了进入编程行业的障碍。

由此可见,将这两种技术结合使用对开发人员是有好处的。使用python和docker的步骤包括:

  • 编写 python 应用程序或脚本

  • 添加 docker 文件

  • 构建 docker 镜像

  • 运行 docker 容器

第 1 步:一个简单的 Python 应用程序

让我们构建一个简单的 Python 应用程序,它从用户那里获取两个数字并将它们相加。

首先为本教程创建一个目录并进入该目录。

# creates docker-tutorial directory in your user folder
mkdir ~/docker-tutorial
cd docker-tutorial

接下来,将一个简单的文件添加到名为application.py.

我们的应用程序将是一个简单的命令行应用程序,它将从用户那里获取两个数字并将它们相加。如果用户不提供任何输入,应用程序将假定这两个数字都是0。

内容application.py如下图:

import sys

# yes, just adding two numbers
def add_two_numbers(a=0, b=0):
    result = a + b
    print(f"a is {a}")
    print(f"b is {b}")
    print(f"solution is {result}")


if __name__ == "__main__":
    if len(sys.argv) > 2:
        add_two_numbers(int(sys.argv[1]), int(sys.argv[2]))
    else:
        add_two_numbers()

第 2 步:添加 Dockerfile

接下来,让我们添加 dockerfile 来对这个应用程序进行 docker 化。这仍然是在docker-tutorial同一目录中完成的。

我们将该文件命名为Dockerfile。请注意,此文件没有扩展名。

该文件告诉 docker 守护进程如何定义容器以及如何构建和运行应用程序。

Dockerfile内容如下。

FROM python:3.10.6-alpine

WORKDIR /usr/src/app

COPY . .

RUN apk update

RUN chmod a+x ./*.py

ENTRYPOINT ["python", "-u", "./application.py" ]

我检查每一行并对其进行更多解释,以便您了解这里发生的事情。

FROM — 这定义了要构建的基础层图像。Docker 为图像构建层。这允许重新使用图像层,从而节省计算和空间。alpine是 python 基础映像的标签,它是 linux 的轻量级发行版。

WORKDIR — 用作容器主要工作空间的目录。所有命令都从此目录作为参考点运行。

COPY——此命令将文件从本地文件系统复制到容器文件系统。在上面的示例中,我们复制了本地目录中的所有文件。

RUN——在构建 docker 容器时运行命令。这里我们更新alpine linux镜像中的包,更改python应用文件的权限application.py

ENTRYPOINT——这是在 docker 容器启动时运行的命令,恰当地称为 ENTRYPOINT。

第 3 步:构建 Docker 镜像

现在让我们构建 docker 镜像。这只需通过

# run in the docker-tutorial directory
docker build -t myapp .

此命令在当前目录中创建一个 docker 镜像,并将其标记为myapp.

您应该能够使用此命令查看所有图像:

docker images
# REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
# myapp         latest    d7c9e6b8dc70   3 seconds ago   48.7MB

第 4 步:运行 Docker 容器

您现在可以运行您的 docker 容器

docker run myapp
# a is 0
# b is 0
# solution is 0

您也可以将参数传递给您的应用程序,类似于下面的命令

docker run myapp 1 2
# a is 1
# b is 2
# solution is 3

这就是 dockerize python 文件所需的全部!玩得开心,保持创意!

https://medium.com/@m_vemuri/dockerize-your-python-application-beb10b948337

推荐书单

《Python从入门到精通(第2版)》

《Python从入门到精通(第2版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Python进行程序开发应该掌握的各方面技术。全书共分23章,包括初识Python、Python语言基础、运算符与表达式、流程控制语句、列表和元组、字典和集合、字符串、Python中使用正则表达式、函数、面向对象程序设计、模块、异常处理及程序调试、文件及目录操作、操作数据库、GUI界面编程、Pygame游戏编程、网络爬虫开发、使用进程和线程、网络编程、Web编程、Flask框架、e起去旅行网站、AI图像识别工具等内容。所有知识都结合具体实例进行介绍,涉及的程序代码都给出了详细的注释,读者可轻松领会Python程序开发的精髓,快速提升开发技能。除此之外,该书还附配了243集高清教学微视频及PPT电子教案。

《Python从入门到精通(第2版)》【摘要 书评 试读】- 京东图书京东JD.COM图书频道为您提供《Python从入门到精通(第2版)》在线选购,本书作者:明日科技,出版社:清华大学出版社。买图书,到京东。网购图书,享受最低优惠折扣!https://item.jd.com/13284890.html

python docker,docker,python,容器

精彩回顾

ChatGPT教你如何用Python和Matplotlib绘图(上) 

ChatGPT教你如何用Python和Matplotlib绘图(下) 

《事半功倍,使用ChatGPT编写Python函数》

超快速,使用ChatGPT编写回归和分类算法

《如虎添翼,将ChatGPT和Python结合起来!》

《ChatGPT优化Python代码的小技巧》

《使用ChatGPT提升Python编程效率》 

微信搜索关注《Python学研大本营》

访问【IT今日热榜】,发现每日技术热点文章来源地址https://www.toymoban.com/news/detail-776421.html

到了这里,关于使用Docker将Python项目容器化,就是这么简单的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python编程工具】【ssh连接Docker容器】如何使用Docker容器里的python环境,如何调试在容器中的代码

    本篇博客将介绍如何在Docker容器中打开SSH连接服务,以及如何使用JetBrains Gateway软件进行代码调试。 JetBrains Gateway是一款紧凑型桌面应用,可让您通过 JetBrains IDE 远程工作,甚至无需下载这些IDE。通过在桌面端安装这款软件,您可以直接调试服务器上的代码。 使用以下命令启

    2024年01月25日
    浏览(65)
  • 二、使用运行自己的docker python容器环境

    第一篇参考: https://blog.csdn.net/weixin_42357472/article/details/131953866 运行容器同时执行命令或脚本 1)这是打开一个对外的jupyter notebook容器环境 在外部打开localhost:8090 jupter需要登录密码 2)运行脚本 测试,可以看到打印日志正常 其他例子 -w 可以制定容器启动默认工作目录

    2024年02月15日
    浏览(43)
  • python轻量级web框架flask初探,搭建网站原来这么简单

    ✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开

    2024年03月19日
    浏览(107)
  • windows部署python项目(以Flask为例)到docker,通过脚本一键生成dockerfile并构建镜像启动容器

    这里使用 pipreqs 进行依赖库的识别。使用 pipreqs 可以自动检索到当前项目下的所有组件及其版本,并生成 requirements.txt 文件。相比直接用pip freeze 命令,避免将整个python环境的依赖包写入。 在项目的当前目录中执行 pipreqs ./ --encoding=utf8 --force 这里使用的是一个基于flask项目,

    2023年04月08日
    浏览(50)
  • 微服务 Spring Cloud 6,用了这么多年Docker容器,殊不知你还有这么多弯弯绕

    大家好,我是哪吒。 单体应用拆分成微服务后,能够实现快速开发迭代,但因为小服务太多,导致测试和部署的成本提高。 单体应用中,将Spring Boot工程打包成一个war包,然后部署在Linux服务器的Tomcat中就可以了。 拆分成微服务后,修改一个需求,可能会涉及多个微服务,这

    2024年02月05日
    浏览(52)
  • Docker使用及部署python项目

    ​ 我写的是一个爬取某ppt网站的代码,就一个ppt1.py是爬虫,然后,ppts是存放下载的ppt的 这个是需要哪些python库支持,写好 ​ 需要一个名为Dockerfile的文件,没有后缀,这个创建docker镜像的配置文件 ​ ​ FROM:需要什么环境 ENV:修改path,即增加/usr/local/bin这个环境变量 AD

    2024年04月11日
    浏览(23)
  • 实战项目—使用Python,SqlServer,HTML实现简单登录模块

            近期应老师的要求,要 使用一门编程语言连接数据库制作一个简单的登录模块 ,对于没有做过项目的小白来说,根本无从下手,甚至不能理解怎么跨平台操作。经过近一周的查资料,改代码,磕磕绊绊总算是实现了。         我是用的语言是Python,后端平台在pyc

    2024年02月09日
    浏览(32)
  • ubuntu 系统安装docker——使用docker打包python项目,整个流程介绍

    目录 1 安装docker和配置镜像源  2 下载基础镜像  3 通过镜像创建容器 4 制作项目所需的容器 5 容器制作好后打包为镜像 6 镜像备份为.tar文件 7 从其他服务器上恢复镜像 8 docker的其他常用指令 首先科普一下镜像、容器和实例; 镜像:相当于安装包; 容器:相当于系统,比如

    2024年02月05日
    浏览(48)
  • 最简单配置jenkins容器使用宿主机的docker方法

    构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可 设置宿主机docker.sock权限 chown root:root /var/run/docker.sock chmod o+rw /var/run/docker.sock 添加数据卷 version: \\\"3.1\\\" services:   jenkins:     image: jenkins/jenkins     container_na

    2024年02月11日
    浏览(43)
  • 结构体的不定长数组,用起来就是这么爽

    结构体数组不定长的做法,有两种 第一种: 指针 第二种:长度为0的数组 1. 结构体的数组指针 特点 : 结构体初始化时,可以是结构体指针,如struct tag_info *pInfo = NULL; 也可以是结构体变量, 如 struct tag_info Info = {‘\\0’}; 使用结构体里面的指针时,必须申请内存,进行初始化

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包