0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何創(chuàng)建Python服務(wù)包,并利用Docker管理數(shù)據(jù)(附源碼)

如意 ? 來(lái)源:讀芯術(shù)微信公眾號(hào) ? 作者:讀芯術(shù)微信公眾號(hào) ? 2020-09-10 15:38 ? 次閱讀

小白程序員面臨的最大困難之一就是理解環(huán)境的概念。環(huán)境是指程序員進(jìn)行編碼的系統(tǒng),這聽(tīng)起來(lái)貌似很容易,但隨著程序員職業(yè)生涯的推薦,程序員會(huì)逐漸體會(huì)到維護(hù)“環(huán)境”是一件多么困難的事情。

這主要是因?yàn)閹?kù)、IDE(集成開(kāi)發(fā)環(huán)境),甚至Python代碼都需要經(jīng)過(guò)更新和版本升級(jí)。有時(shí)更新一個(gè)庫(kù),某段代碼就會(huì)出錯(cuò),需要重新修改代碼。如果同時(shí)開(kāi)發(fā)多個(gè)項(xiàng)目,就會(huì)引起依賴沖突,當(dāng)某段代碼導(dǎo)致另一段代碼錯(cuò)誤時(shí),事情就會(huì)變得很棘手了。

另外,如果想將項(xiàng)目共享給一個(gè)在不同操作系統(tǒng)上的工作伙伴,或者將在Mac上構(gòu)建的項(xiàng)目交付到另一個(gè)操作系統(tǒng)的生產(chǎn)服務(wù)器上,就不得不重新配置代碼了。

為了解決這些問(wèn)題,將項(xiàng)目和項(xiàng)目所處的環(huán)境分離的方法被稱為“容器”。容器是支持環(huán)境運(yùn)行的地方,與系統(tǒng)上的其他內(nèi)容東西相分離。一旦定義了容器中的內(nèi)容,重建環(huán)境就很容易了,甚至可以實(shí)現(xiàn)與同事共享項(xiàng)目。

要求

啟動(dòng)Docker,需要安裝軟件:

windows或macOS:安裝Docker Desktop

linux:安裝Docker,然后編寫Docker

Python服務(wù)包

假設(shè)正在創(chuàng)建一個(gè)名為server.py的Flask服務(wù),并設(shè)置該文件的內(nèi)容,如下:

如何創(chuàng)建Python服務(wù)包,并利用Docker管理數(shù)據(jù)(附源碼)

如上述,需保留代碼依賴關(guān)系的記錄。因此創(chuàng)建一個(gè)關(guān)于需求的txt文件,包含以下內(nèi)容:

Flask==1.1.1

因此,服務(wù)包有以下結(jié)構(gòu):

如何創(chuàng)建Python服務(wù)包,并利用Docker管理數(shù)據(jù)(附源碼)

該結(jié)構(gòu)十分符合邏輯(源文件保存在獨(dú)立目錄中)。若執(zhí)行Python程序,我們需要安裝并運(yùn)行Python解釋器。接下來(lái)可以在本地運(yùn)行這個(gè)程序,如果有15個(gè)項(xiàng)目同時(shí)運(yùn)行,在一個(gè)容器中運(yùn)行可以避免與其他項(xiàng)目發(fā)生沖突。

Dockerfile

運(yùn)行Python代碼,需要將容器打包為Docker鏡像,然后運(yùn)行。操作如下:

創(chuàng)建一個(gè)包含構(gòu)建鏡像所需指令的Dockerfile

然后通過(guò)Docker生成器創(chuàng)建鏡像

簡(jiǎn)單的docker run 命令就可以創(chuàng)建一個(gè)正在運(yùn)行應(yīng)用程序的容器

Dockerfile分析

Dockerfile是一個(gè)包含合成Docker鏡像說(shuō)明的文件(命名為myimage):

如何創(chuàng)建Python服務(wù)包,并利用Docker管理數(shù)據(jù)(附源碼)

Dockerfile是逐行編譯的,因此生成器會(huì)生成一個(gè)圖層,并將其疊加在之前的圖像上。在build命令的輸出中,可以看到作為步驟執(zhí)行的Dockerfile指令。

如何創(chuàng)建Python服務(wù)包,并利用Docker管理數(shù)據(jù)(附源碼)

然后可以發(fā)現(xiàn)鏡像存儲(chǔ)在本地圖像中:

如何創(chuàng)建Python服務(wù)包,并利用Docker管理數(shù)據(jù)(附源碼)

在開(kāi)發(fā)過(guò)程中,可能需要多次為Python服務(wù)重新構(gòu)建鏡像,所以希望花費(fèi)盡可能少的時(shí)間。

Docker和virtualenv非常相似,但又有所不同。Virtualenv允許你在Python依賴關(guān)系中切換,但必須使用主機(jī)操作系統(tǒng)。然而,使用Docker就可以在任何操作系統(tǒng)上安裝和運(yùn)行Python(包括Ubuntu、Debian、Alpine以及Windows Server Core)。

因此,如果你在一個(gè)團(tuán)隊(duì)中工作,希望可以在以后證明你的技術(shù),就要使用Docker。如果不用docker,venv也是不錯(cuò)的,但它不是通向未來(lái)的憑證。

本文展示了如何創(chuàng)建Python服務(wù)包,并希望簡(jiǎn)化過(guò)程,使程序員的項(xiàng)目維持更長(zhǎng)時(shí)間。因?yàn)楫?dāng)依賴關(guān)系發(fā)生變化時(shí),它不太可能出現(xiàn)代碼錯(cuò)誤。
責(zé)編AJX

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6715

    瀏覽量

    88316
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84081
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    446

    瀏覽量

    11738
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何在Docker創(chuàng)建容器

    Docker是一個(gè)開(kāi)源的引擎,可以輕松的為任何應(yīng)用創(chuàng)建一個(gè)輕量級(jí)的、可移植的、自給自足的容器。開(kāi)發(fā)者在筆記本上編譯測(cè)試通過(guò)的容器可以批量地在生產(chǎn)環(huán)境中部署,包括VMs(虛擬機(jī))、bare metal
    發(fā)表于 01-03 15:58

    理解Docker容器暢玩docker

    。--------------------------------------------------------------------------------------Docker服務(wù)安裝和啟用的必要條件。建議操作系統(tǒng)
    發(fā)表于 11-05 09:54

    獲取源碼及Ubuntu編譯環(huán)境準(zhǔn)備

    、ninja、LLVM編譯工具。安裝gn、ninja、LLVM編譯工具時(shí),請(qǐng)確保編譯工具的環(huán)境變量路徑唯一。獲取源碼開(kāi)發(fā)者需要在Linux服務(wù)器上下載解壓一套源代碼,請(qǐng)參見(jiàn)源碼獲取。
    發(fā)表于 08-19 11:10

    Niobe獲取源碼及Ubuntu編譯環(huán)境準(zhǔn)備

    在Linux服務(wù)器上下載解壓一套源代碼,請(qǐng)參見(jiàn)源碼獲取。安裝必要的庫(kù)和工具使用如下apt-get命令安裝編譯所需的必要的庫(kù)和工具:sudo apt-get install build-essential
    發(fā)表于 12-08 14:34

    Niobe獲取源碼及Ubuntu編譯環(huán)境準(zhǔn)備

    、ninja、LLVM編譯工具。安裝gn、ninja、LLVM編譯工具時(shí),請(qǐng)確保編譯工具的環(huán)境變量路徑唯一。獲取源碼開(kāi)發(fā)者需要在Linux服務(wù)器上下載解壓一套源代碼,請(qǐng)參見(jiàn)源碼獲取。
    發(fā)表于 12-08 17:36

    OpenHarmony開(kāi)發(fā)——系統(tǒng)源碼編譯

    控制臺(tái),按ctrl+`可以打開(kāi),創(chuàng)建啟動(dòng)docker容器,上一步執(zhí)行完畢就直接進(jìn)入容器內(nèi)部了$ sudo docker run -it -v $
    發(fā)表于 08-30 10:08

    在基于AT32 RT-Thread的源碼中開(kāi)啟下載Micropython開(kāi)源

    Micropython Based On AT32 RTT講述如何在基于AT32 RT-Thread 的源碼中開(kāi)啟下載Micropython 開(kāi)源,
    發(fā)表于 10-25 07:06

    蜂鳴器播放音樂(lè)設(shè)計(jì)與實(shí)現(xiàn)(源碼

    蜂鳴器播放音樂(lè)設(shè)計(jì)與實(shí)現(xiàn)(源碼
    發(fā)表于 04-24 11:00 ?87次下載
    蜂鳴器播放音樂(lè)設(shè)計(jì)與實(shí)現(xiàn)(<b class='flag-5'>附</b><b class='flag-5'>源碼</b>)

    基于51單片機(jī)的圖書管理系統(tǒng)實(shí)現(xiàn)與設(shè)計(jì)(源碼)

    基于51單片機(jī)的圖書管理系統(tǒng)實(shí)現(xiàn)與設(shè)計(jì)(源碼)
    發(fā)表于 04-26 10:52 ?18次下載

    怎樣利用Python去快速創(chuàng)建矩陣?

    Python提供了很多函數(shù)可以快速創(chuàng)建矩陣。
    的頭像 發(fā)表于 06-11 17:37 ?1.6w次閱讀
    怎樣<b class='flag-5'>利用</b><b class='flag-5'>Python</b>去快速<b class='flag-5'>創(chuàng)建</b>矩陣?

    如何為Python應(yīng)用選擇最好的Docker鏡像?

    在使用 Python 的早些年,為了解決 Python 的隔離與管理 virtualenvwrapper 就成為我的工具箱中重要的一員。后來(lái),隨著
    發(fā)表于 10-24 11:18 ?691次閱讀

    Docker 教程:如何將Helix QAC作為容器創(chuàng)建運(yùn)行

    在此 Docker 教程中,你將學(xué)習(xí)如何創(chuàng)建 Helix QAC 并將其作為容器化鏡像運(yùn)行。 Docker 的基本定義是一種開(kāi)源和流行的操作系統(tǒng)級(jí)虛擬化(通常稱為“容器化”)技術(shù),它是輕量級(jí)的,可
    的頭像 發(fā)表于 10-31 09:36 ?847次閱讀
    <b class='flag-5'>Docker</b> 教程:如何將Helix QAC作為容器<b class='flag-5'>創(chuàng)建</b><b class='flag-5'>并</b>運(yùn)行

    python有什么用 如何用python創(chuàng)建數(shù)據(jù)庫(kù)

    開(kāi)發(fā)、游戲開(kāi)發(fā)、機(jī)器學(xué)習(xí)、自然語(yǔ)言處理等領(lǐng)域。 在本文中,我們將介紹如何使用Python創(chuàng)建數(shù)據(jù)庫(kù)。首先,讓我們了解一下什么是數(shù)據(jù)庫(kù)。 什么是數(shù)據(jù)
    的頭像 發(fā)表于 08-28 16:41 ?1060次閱讀

    python循環(huán)創(chuàng)建變量賦值

    循環(huán)是Python編程中非常重要的一個(gè)概念,它可以讓我們輕松地重復(fù)執(zhí)行某些代碼塊,從而簡(jiǎn)化編程過(guò)程并提高代碼的效率。在循環(huán)中,我們經(jīng)常需要創(chuàng)建變量賦值,這是非常常見(jiàn)的操作。接下來(lái),我將詳盡地解釋在
    的頭像 發(fā)表于 11-23 14:51 ?1362次閱讀

    利用Python腳本登錄到交換機(jī)創(chuàng)建VLAN

    本文將詳細(xì)介紹如何利用Python腳本登錄到交換機(jī)創(chuàng)建VLAN。
    的頭像 發(fā)表于 08-12 17:59 ?287次閱讀