日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
還不使用Docker管理數(shù)據(jù),你是從1985年穿越來的嗎?

還不使用docker管理數(shù)據(jù),你是從1985年穿越來的嗎?

作者:讀芯術(shù) 2020-09-10 08:49:12

云計(jì)算

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

成都創(chuàng)新互聯(lián)專注于萬載網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供萬載營(yíng)銷型網(wǎng)站建設(shè),萬載網(wǎng)站制作、萬載網(wǎng)頁(yè)設(shè)計(jì)、萬載網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造萬載網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供萬載網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)。

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

這主要是因?yàn)閹?kù)、IDE(集成開發(fā)環(huán)境),甚至Python代碼都需要經(jīng)過更新和版本升級(jí)。有時(shí)更新一個(gè)庫(kù),某段代碼就會(huì)出錯(cuò),需要重新修改代碼。如果同時(shí)開發(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ù)器上,就不得不重新配置代碼了。

為了解決這些問題,將項(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)容,如下:

  
 
 
 
  1. from flask import Flask 
  2. server = Flask(__name__)@server.route("/") 
  3.  def hello(): 
  4.     return "Hello World!"if __name__ == "__main__": 
  5.    server.run(host='0.0.0.0') 

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

  
 
 
 
  1. Flask==1.1.1 

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

  
 
 
 
  1. app 
  2. ├─── requirements.txt 
  3. └─── src 
  4.      └─── server.py 

該結(jié)構(gòu)十分符合邏輯(源文件保存在獨(dú)立目錄中)。若執(zhí)行Python程序,我們需要安裝并運(yùn)行Python解釋器。接下來可以在本地運(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
  • 然后通過Docker生成器創(chuàng)建鏡像
  • 簡(jiǎn)單的docker run 命令就可以創(chuàng)建一個(gè)正在運(yùn)行應(yīng)用程序的容器

Dockerfile分析

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

  
 
 
 
  1. # set base image (host OS) 
  2. FROM python:3.8# set the working directory in the container 
  3. WORKDIR /code# copy the dependencies file to the working directory 
  4. COPY requirements.txt .# install dependencies 
  5. RUN pip install -r requirements.txt# copy the content of the local srcdirectory to the working directory 
  6. COPY src/ .# command to run on container start 
  7. CMD [ "python", "./server.py" ] 

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

  
 
 
 
  1. $ docker build -t myimage . 
  2. Sending build context to Docker daemon 6.144kBStep 1/6 :FROM python:3.8 
  3. 3.8.3-alpine:Pulling from library/python 
  4. …Status:Downloaded newer image for python:3.8.3-alpine 
  5. ---> 8ecf5a48c789Step 2/6 :WORKDIR /code 
  6. ---> Running in 9313cd5d834d 
  7. Removing intermediate container 9313cd5d834d 
  8. ---> c852f099c2f9Step 3/6 :COPY requirements.txt . 
  9. ---> 2c375052ccd6Step 4/6 :RUN pip install -rrequirements.txt 
  10. ---> Running in 3ee13f767d05 
  11. …Removing intermediate container 3ee13f767d05 
  12. ---> 8dd7f46dddf0Step 5/6 :COPY ./src . 
  13. ---> 6ab2d97e4aa1Step 6/6 :CMD python server.py 
  14. ---> Running in fbbbb21349be 
  15. Removing intermediate container fbbbb21349be---> 27084556702b 
  16. Successfully built 70a92e92f3b5 
  17. Successfully tagged myimage:latest 

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

  
 
 
 
  1. $ docker images 
  2. REPOSITORY TAG IMAGE ID CREATED SIZEmyimage latest 70a92e92f3b5 8 seconds ago 991MB 

在開發(fā)過程中,可能需要多次為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ò)的,但它不是通向未來的憑證。

圖源:unsplash

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


網(wǎng)站欄目:還不使用Docker管理數(shù)據(jù),你是從1985年穿越來的嗎?
當(dāng)前網(wǎng)址:http://www.5511xx.com/article/djsehei.html