本篇內(nèi)容主要講解“怎么把一個Python應用程序裝進Docker”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么把一個Python應用程序裝進Docker”吧!

公司主營業(yè)務:成都網(wǎng)站建設、成都網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出中方免費做網(wǎng)站回饋大家。
準備
容器無處不在,但是如何在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應用程序意味著創(chuàng)建一個Docker鏡像,其中包含運行它所需要的一切:源代碼、依賴項和配置。
容器化應用程序的第一步是創(chuàng)建一個新的文本文件,名為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映像中安裝我們的依賴項。為了實現(xiàn)這一點,我們將使用RUN命令運行pip安裝:
# 3. Install our deps RUN pip install -r /src/requirements.txt
需要注意的一件事是,requirements.txt的路徑與我們第一次運行pip安裝時不同。
這背后的原因是復制的文件在映像內(nèi)的/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現(xiàn)在已經(jīng)完成,我們可以使用它來構建Docker映像。為此,我們需要使用docker構建命令:
docker build -t movie-recommender .
這個命令使用當前文件夾作為構建上下文構建一個名為movie-recommender的Docker圖像。在最后指定我們想要使用的構建上下文的路徑)。
現(xiàn)在我們可以使用docker run命令運行剛剛構建的圖像:
docker run movie-recommender python /src/app.py
該命令將在基于電影推薦圖像的容器中執(zhí)行python /src/app.py。
但是,如果我們嘗試使用curl localhost:8888連接到我們的應用程序,我們將會得到一個錯誤。
這怎么可能?為什么我們不能連接到在容器內(nèi)運行的應用程序?
原因是我們沒有將應用程序的端口公開給本地機器。我們可以使用-p HostPort:ContainerPort標志來實現(xiàn)這一點。
因此,讓我們嘗試再次運行該命令,這一次指定我們希望在本地公開端口8888:
docker run -p 8888:8888 movie-recommender python /src/app.py
然后curl localhost:8888。
現(xiàn)在的效果非常好!我們剛剛包含了一個Python應用程序!
到此,相信大家對“怎么把一個Python應用程序裝進Docker”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!
名稱欄目:怎么把一個Python應用程序裝進Docker
文章源于:http://www.js-pz168.com/article46/pojdeg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計、網(wǎng)站改版、移動網(wǎng)站建設、域名注冊、網(wǎng)站制作、面包屑導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)