如何把一个Python应用程序装进Docker

Docker 安装 Python Docker 是一个开源的平台,用于开发、运输和运行应用程序。它允许您将应用程序与基础设施分开,以便快速交付软件。Docker 容器是轻量级的,可执行的独立软件包,包含运行应用程序所需的一切:代码、运行环境、系统工具和库。在本文中,我们将介绍如何使用 Docker 安装 Python。在开始之前,您需要在系统上安装 Docker。Docker CE(Community Edition)可以在大多数平台上免费使用。以下是安装 Docker 的步骤:在 Linux 上,您可以使用包管理器安装 Docker CE 阅读详情

准备

容器无处不在,但是如何在Docker容器中运行Python应用程序呢?这篇文章将告诉你怎么做!

如果您想知道,这些示例需要Python 3.x。

在深入讨论容器之前,让我们进一步讨论一下我们想要封装的Python应用程序。

这个应用程序是一个web API,它从一个电影集合中返回一个随机的电影。在我们的本地文件夹中,我们有3个文件:

app.py # Python application 
movies.json # movie collection 
requirements.txt # where we specifiy our Python dependencies 

app.py包含一个API端点,它返回一个随机的影片:

import os 
import json 
from pathlib import Path 
from random import choice 
import cherrypy 
 
PORT = os.environ.get('PORT', 8888) 
 
FOLDER_PATH = Path(__file__).parent 
 
with open(FOLDER_PATH / "movies.json", "r") as f: 
    MOVIES = json.loads(f.read()) 
 
class Movie: 
    @cherrypy.expose 
    @cherrypy.tools.json_out() 
    def index(self): 
        return {"movie": choice(MOVIES)} 
 
cherrypy.quickstart( 
    Movie(), config=cherrypy.config.update({ 
        'server.socket_host': '0.0.0.0', 
        'server.socket_port': PORT, 
        })) 

requirement.txt,我们有我们的依赖包

pip install -r requirements.txt 

我们可以使用python app.py运行我们的应用程序。

运行curl localhost:8888应该返回一个随机的影片,类似于:

{ 
  "movie": { 
    "Title": "Opal Dreams", 
    "US_Gross": 14443, 
    "Worldwide_Gross": 14443, 
    "US_DVD_Sales": null, 
    "Production_Budget": 9000000, 
    "Release_Date": "Nov 22 2006", 
    "MPAA_Rating": "PG", 
    "Running_Time_min": null, 
    "Distributor": "Strand", 
    "Source": "Based on Book/Short Story", 
    "Major_Genre": "Drama", 
    "Creative_Type": "Contemporary Fiction", 
    "Director": null, 
    "Rotten_Tomatoes_Rating": null, 
    "IMDB_Rating": 6.5, 
    "IMDB_Votes": 468 
  } 
} 

如何容器化我们的程序

包含一个Python应用程序意味着创建一个Docker镜像,其中包含运行它所需要的一切:源代码、依赖项和配置。

容器化应用程序的第一步是创建一个新的文本文件,名为Dockerfile:

app.py 
movies.json 
requirements.txt 
Dockerfile 

在Dockerfile(我们认为是最小可行Dockerfile)中,我们需要指定三个步骤:

  • 选择我们想要使用的基本图像
  • 选择我们想要在Docker图像中复制的文件
  • 安装应用程序的依赖项

Base image

要指定基本映像,我们使用FROM命令,后面跟着私有或公共映像。

在我们的例子中,我们将使用官方的Python Docker映像,该映像可在Docker hub上使用。

我们将选择最新可用的基于Ubuntu的python3图像。

# 1. Base image 
FROM python:3.8.5-slim-buster 

图像名称由两个不同的部分组成:image:tag。在我们的例子中,图像是python,标签是3.8.5-slim-buster。

这就是第一步所需要的一切。

复制应用程序

要在Docker图像中复制我们的应用程序,我们将使用copy命令:

# 2. Copy files 
COPY . /src 

此命令将指定的文件(或文件夹)复制到Docker映像中。在我们的例子中,我们希望复制Docker映像中本地文件夹中/src路径下的所有可用文件。

值得注意的是,COPY命令的第一部分是相对于构建上下文的路径,而不是相对于我们的本地机器的路径。

安装requirements.txt

最后一步是在Docker映像中安装我们的依赖项。为了实现这一点,我们将使用RUN命令运行pip安装:

# 3. Install our deps 
RUN pip install -r /src/requirements.txt 

需要注意的一件事是,requirements.txt的路径与我们第一次运行pip安装时不同。

这背后的原因是复制的文件在映像内的/src路径下。

构建并运行Docker映像

# 1. Base image 
FROM python:3.8.3-slim-buster 
 
# 2. Copy files 
COPY . /src 
 
# 3. Install our deps 
RUN pip install -r /src/requirements.txt 

我们的Dockerfile现在已经完成,我们可以使用它来构建Docker映像。为此,我们需要使用docker构建命令:

docker build -t movie-recommender . 

这个命令使用当前文件夹作为构建上下文构建一个名为movie-recommender的Docker图像。在最后指定我们想要使用的构建上下文的路径)。

现在我们可以使用docker run命令运行刚刚构建的图像:

docker run movie-recommender python /src/app.py 

该命令将在基于电影推荐图像的容器中执行python /src/app.py。

但是,如果我们尝试使用curl localhost:8888连接到我们的应用程序,我们将会得到一个错误。

这怎么可能?为什么我们不能连接到在容器内运行的应用程序?

原因是我们没有将应用程序的端口公开给本地机器。我们可以使用-p HostPort:ContainerPort标志来实现这一点。

因此,让我们尝试再次运行该命令,这一次指定我们希望在本地公开端口8888:

docker run -p 8888:8888 movie-recommender python /src/app.py 

然后curl localhost:8888。

现在的效果非常好!我们刚刚包含了一个Python应用程序!

【docker】—— 部署python项目 Docker 是一个开源平台,用于自动化应用程序的部署、扩展和管理。它通过容器技术实现轻量级、可移植的应用打包,确保在不同环境中应用的一致性。本文使用docker简单演示了如何部署一个python项目。 阅读详情

相关推荐

Docker部署 Python 应用最全教学

前言 Docker 是一个开源项目,为开发人员和系统管理员提供了一个开放平台,可以将应用程序构建、打包为一个轻量级容器,并在任何地方运行。Docker 会在软件容器中自动部署应用程序。 在本篇中,我将介绍如何 docker 化一个 Python Django 应用程序,然后使用一个 docker-compose 脚本将应用程序作为容器部署到 docker 环境。 环境 操作系统 dbnuo@localhost ~ sw_vers ProductName: Mac OS X ProductVersion

星云随风 倚码为诗 1万+

docker容器中python安装

1.安装依赖2.进入/usr/local 目录,将安装包存放在此目录3.解压包,创建文件加,进入解压后的文件目录4.配置安装路径5.创建软连接#如果pip3安装失败可以尝试(apt-get install python3-pip)6.至此一切python环境准备就绪(可使用-V命令查看版本信息)又及:如果仍然不能使用pip3安装python的三方库,建议推倒重试一次。

GL666的专栏 1892

信息学奥赛一本通高手训练1680:序列

题目 代码 #include<cstdio> #include<iostream> #include<cmath> #define LL long long using namespace std; const LL N = 1400000+7; const LL mod = 1e9+7; int n, t; LL pos[N], sum[N], ans[N]; struct node{ LL ll, rr; }a[N]; int main(){ p

qingfeixueyue的博客 468

最新系统centos安装最新版python 3.8.5以及pip换源、临时指定源,pytest安装后的使用以及出现pytest命令not found无法识别

1、如果是从网站上单独下载的centos镜像,大多数一般都带有python2或者python3,如果是使用的docker中的centos镜像,那是不带任何东西的,比较纯净。通过输入 python 查看是否有安装。 2、安装依赖包 yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel yum install gcc gc

代码讲故事 1880

【MFiX后处理】MFiX中使用des_usr_var输出颗粒的传热量(2020-11-27更新变更输出变量名方法)

参考之前Yin的那一篇博客 https://www.cnblogs.com/Jay-CFD/p/10621274.html 输出一下颗粒传热量 使用的算例是fluid_bed_dem_2d 打开des scalar tracking 前面都和Yin那篇一样,打开enable user scalar tracking 输入2 因为第一个用来测试Y加速度了 第二个输出传热量 然后在output vtk中勾选好 更改源代码 源代码为des_thermo_newvalues.f 在mfix-GUI自带的ed

beidou111的博客 1533

PyMuPDF为PDF文件添加注释

我将介绍如何使用PyMuPDF库来为PDF文件添加注释,包括文本注释、高亮注释、下划线注释等15种注释的使用方法。

布啦啦 2243

无需环境,直接用 Docker 来启动你的 Python 项目

大家好 我是洪峰想象这样一种场景,你写好了代码,准备部署在新的服务器上,这台服务器只有 Python2 和 Python3.6,没有你代码适配好的 Python3.12,那怎么办?1、编译安装 Python,我不推荐这种方法,安装过程中,各种缺失的依赖绝对让你抓狂,如果你就是要用这种方法,可以参考这篇。2、docker 或 docker compose,我强烈推荐这种方法,而且不构建自定义镜像就可以运行,相当于你有一个随时使用的 Python 环境。

2301_76564079的博客 4537

uniapp:详细ios本地离线打包完整流程,使用XCode苹果本地离线打包APP,UNIAPP IOS离线打包并上传到上传到App Store应用商店(mac环境 Uniapp iOS本地离线打包)

uniapp ios 本地离线打包(攻略),iOS App打包发布上架,uni-app项目离线打包之iOS,uni-app实现XCode苹果本地离线打包APP,UNIAPP之IOS离线打包,iOS开发打包ipa,uniapp 打包 IOS,uniapp ios app离线打包配置,uniapp打包离线App(ios),uniapp ios打包详细步骤,最新版iOS Xcode如何证书配置和ipa打包(附图文教程)uniapp申请ios证书,uniapp iOS打包,证书申请,XCode打包IOS应用发布Ap

✅ 精选推荐文章 4506

docker安装Python3.8镜像--最详流程引导

docker安装Python3.8镜像–最详流程引导 1. 安装方式1 1. 搜索Python镜像 docker search python 2. 拉取Python镜像 docker pull python 3. 运行Python镜像 docker run -it python:latest bash 4. 查看Python版本 python -V 2. 安装方式2 1. 到dock官网(链接如下) https://hub.docker.com/ 搜索框输入Python3.8 点击

weixin_45912307的博客 9933

ISO13849功能安全从入门到精通(3):安全功能及其对降低风险的贡献4

例如,如果机器必须在有限速度下运行时进行设置,那么在低加速度值下进行设置时,参数P1将是正确的选择:随着危险缓慢出现并给予足够的运动自由,操作员将能够移出危险区域。例如,在无故障的条件下,在操作者的手的方向移动的滚子不能陷住它。在所有其他情况下,F1是正确的选择,前提是危险暴露的持续时间不超过机器总操作时间的1/20。需求来源于必要的风险降低。由于这些考虑而降低的PLr在任何情况下都不得低于通过比较方式考虑的机器的PLr,因为并不能从事故发生率低和严重程度低得出实施的安全功能提供的安全水平高于要求。

wdconan001的博客 834

嵌入式Linux&Android开发-TP调试

目录 一、修改DTS,添加新的I2C设备 二、修改Makefile,Kconfig 三、tp调试时的问题排查 一、修改DTS,添加新的I2C设备 &i2c4 { status = "okay"; clock-frequency = <400000>; gslX680@40 { compatible = "gslX680"; reg = <0x40>; touch-gpio = <&gp

嵌入式成长手册 572

docker python_如何把一个Python应用程序装进Docker

准备容器无处不在,但是如何在Docker容器中运行Python应用程序呢?这篇文章将告诉你怎么做!如果您想知道,这些示例需要Python 3.x。在深入讨论容器之前,让我们进一步讨论一下我们想要封装的Python应用程序。这个应用程序是一个web API,它从一个电影集合中返回一个随机的电影。在我们的本地文件夹中,我们有3个文件:app.py # Python applicationmo...

weixin_39889337的博客 112

全局–局部傅里叶神经算子(GL-FNO):原理、严格推导与 PINN 混合策略

本文提出了一种全局-局部傅里叶神经算子(GL-FNO)及其与物理信息神经网络(PINN)的结合方法。主要内容包括: 架构设计:GL-FNO包含两个分支 - 全局分支处理低频结构,使用下采样输入;局部分支处理高频细节,使用全分辨率输入。两分支通过自适应门控机制融合。 理论分析:证明了GL-FNO在"低频全局+高频局部"任务上的优势,给出了误差分解和复杂度分析,并推导了与PINN结合时的渐进一致性条件。 实现方法:采用频谱微分计算物理残差,推导了完整的训练流程,包括数据损失与物理损失的联合优

VectorShift的博客 1332

python怎么做应用程序_如何把一个Python应用程序装进Docker

准备容器无处不在,但是如何在Docker容器中运行Python应用程序呢?这篇文章将告诉你怎么做!如果您想知道,这些示例需要Python 3.x。在深入讨论容器之前,让我们进一步讨论一下我们想要封装的Python应用程序。这个应用程序是一个web API,它从一个电影集合中返回一个随机的电影。在我们的本地文件夹中,我们有3个文件:app.py#Pythonapplicationmovies....

weixin_39851914的博客 96

DeerFlow 系列教程 第十六篇 | 实战案例一——用 DeerFlow 进行深度研究

在日常使用 AI Agent 时,最常见的需求之一就是对某个主题进行全面、系统的研究。多源信息采集——不能只依赖单次搜索,需要从多个角度搜索不同来源交叉验证——不同来源的信息需要相互印证,避免单一信源的偏差结构化输出——最终产出的不是零散的信息片段,而是有组织的研究报告传统做法是人工反复搜索、阅读、整理。传统手工研究: DeerFlow 深度研究:人工搜索 → 阅读页面 → 记笔记 提交研究主题│ │▼ ▼换关键词 → 再搜索 → 再阅读 ┌──────────────────┐。

weixin_43674738的博客 163

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python代码如何做成应用程序_如何把一个Python应用程序装进Docker

准备容器无处不在,但是如何在Docker容器中运行Python应用程序呢?这篇文章将告诉你怎么做!如果您想知道,这些示例需要Python 3.x。在深入讨论容器之前,让我们进一步讨论一下我们想要封装的Python应用程序。这个应用程序是一个web API,它从一个电影集合中返回一个随机的电影。在我们的本地文件夹中,我们有3个文件:app.py # Python applicationmovies....

weixin_39727706的博客 81

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

用docker部署一个python 后台应用程序

文章目录用docker部署一个python 后台应用程序下载并安装docker主要步骤简述创建后台python应用编写Dockerfilebuild dockerrun docker 用docker部署一个python 后台应用程序 下载并安装docker 教程 主要步骤简述 要写一个dockerfile在项目的根目录,然后用docker的程序去在有这个dockerfile的目录下去生成一个docker image,这个docker image内部是一个linux的操作系统,类似于一个VM 创建后台pyth

qq_32817785的博客 1283

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Docker 初学者指南——如何创建您的第一个 Docker 应用程序

如果您更换计算机或有员工加入您的公司,您只需将您的配置提供给他们。每当您需要一个关于如何创建您的第一个 Docker 应用程序的简单而具体的示例时,您都可以参考这篇文章。” 显示在您的终端中,您将知道您的 Docker 正在运行。您所要做的就是启动您的容器,您的应用程序将立即启动。为了创建您的第一个 Docker 应用程序,我邀请您在您的计算机上创建一个文件夹。一旦您的代码准备就绪并编写了 Dockerfile,您所要做的就是创建包含您的应用程序的映像。与 Docker 不同,虚拟机将包含完整的操作系统。

sikh_0529的博客 1541

Docker初学者指南-如何创建您的第一个Docker应用程序

您是一名开发人员,并且要开始使用Docker? 本文是为您准备的。 (You are a developer and you want to start with Docker? This article is made for you.) After a short introduction on what Docker is and why to use it, you will be ab...

cumi7754的博客 1384

docker打包python应用_如何Docker化Python Django应用程序

Docker是一个开源项目,为开发人员和系统管理员提供了一个开放平台,可以将应用程序构建、打包为一个轻量级容器,并在任何地方运行。Docker 会在软件容器中自动部署应用程序。Django 是一个用 Python 编写的 Web 应用程序框架,遵循 MVC(模型-视图-控制器)架构。它是免费的,并在开源许可下发布。它速度很快,旨在帮助开发人员尽快将他们的应用程序上线。在本教程中,我将逐步向你展示在...

weixin_33782854的博客 432

docker运行一个python脚本

python放到docker中运行

超级浣熊 6317

python docker-compose

参考文档: https://pypi.org/project/docker-compose/ 源码:https://github.com/docker/compose compose是一个定义和运行多容器docker应用程序的工具。通过compose,我们可以使用一个yaml文件来配置应用程序需要的所有服务。然后,使用一个简单的命令,就可以从配置中创建和启动所有的服务。 Docker Compose有两个重要的概念: 服务(Service):一个应用容器,实际上可以包含若干运行相同镜像的容器实例 项

深海微澜 3355

docker制作一个python的镜像文件

等待镜像构建过程完成。这个过程将根据 Dockerfile 中的配置和指令,构建一个包含您的Python应用程序和依赖的Docker镜像。在项目根目录下,将您的Python应用程序准备好,并确保它的依赖项已在一个名为 requirements.txt 的文件中。通过这些步骤,您可以成功制作一个包含Python应用程序和相关文件的Docker镜像,并将应用程序运行在Docker容器中。在上面的命令中,我们使用了 -d 参数来在后台运行容器,并使用 --name 参数为容器指定一个名称。

qq_44539748的博客 2222

[docker]Docker 安装 Python

等待下载完成后,我们就可以在本地镜像列表里查到 REPOSITORY 为python, 标签为 3.5 的镜像。使用容器的 python 命令来执行工作目录中的 helloworld.py 文件。将主机中当前目录下的 myapp 挂载到容器的 /usr/src/myapp。myapp 目录将映射为 python 容器配置的应用目录。进入创建的 python 目录,创建 Dockerfile。指定容器的 /usr/src/myapp 目录为工作目录。首先,创建目录 python,用于存放后面的相关东西。

FL1768317420的博客 1270
上一篇: 大佬用python写了个豆瓣短评爬虫,来试试你喜欢的电影吧!
下一篇: 一文带你快速爬取网易云音乐,就是这么简单!
pythonlaodi
博客等级 码龄6年 286粉丝 244原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值