偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

都2020年了,居然還有人沒有在數(shù)據(jù)科學(xué)項目中使用Docker?

開發(fā) 前端
新手程序員面臨的困難的問題之一是理解“環(huán)境”的概念。環(huán)境就是你編寫代碼的系統(tǒng),聽起來很容易,但很快你就會明白維護系統(tǒng)有多困難。

 新手程序員面臨的困難的問題之一是理解“環(huán)境”的概念。環(huán)境就是你編寫代碼的系統(tǒng),聽起來很容易,但很快你就會明白維護系統(tǒng)有多困難。

很大原因是庫和 IDE,甚至 Python 代碼本身都會經(jīng)歷更新和版本更改,有時候,我們對一個庫進行更新,就會導(dǎo)致另一段代碼報錯。正因如此,我們經(jīng)常需要修復(fù)各種來源不明的 BUG。

此外,如果我們同時開發(fā)多個項目,可能會出現(xiàn)依賴性沖突。如果一段代碼因為另一段代碼而出現(xiàn) BUG 時,情況會更糟糕。

另外,如果你想將一個項目共享給一個在不同操作系統(tǒng)上工作的團隊成員,或者將你在 Mac 上構(gòu)建的項目發(fā)送到另一個操作系統(tǒng)上的服務(wù)器,你是否需要重新配置代碼?很明顯是一定需要的。

因此,為了減少這些問題的出現(xiàn),人們提出使用容器來分離項目和它們所在的環(huán)境。容器基本上是一個環(huán)境可以運行的地方,與系統(tǒng)中的所有其他東西分開。一旦定義了容器中的內(nèi)容,就可以輕松地重新創(chuàng)建環(huán)境,甚至與同事共享項目。

要求

首先,我們需要安裝一些設(shè)置:

Windows或macOS:安裝Docker Desktop(https://www.docker.com/get-started)

Linux:先安裝Docker,再安裝 Docker Compose(https://docs.docker.com/compose/install/)

對Python服務(wù)進行容器化

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

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

如上所述,我們需要記錄代碼的依賴關(guān)系,因此,我們可以創(chuàng)建一個 requirements.txt 文件,其中可以包含以下要求:

  1. Flask==1.1.1 

因此,我們的軟件包需要具有以下結(jié)構(gòu):

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

該結(jié)構(gòu)非常合理(源代碼保存在單獨的目錄中)。要執(zhí)行我們的 Python 程序,只需安裝一個Python 解釋器并運行即可。

我們可以在本地運行該程序,但是假設(shè)我們正在處理 15 個項目:在容器中運行是有意義的,這樣可以避免與其他項目發(fā)生沖突。

讓我們進入容器化。

Dockerfile

要運行 Python 代碼,我們將容器打包為 Docker 映像,然后基于它運行一個容器。如下所示:

  • 創(chuàng)建一個 Dockerfile,其中包含構(gòu)建圖像所需的說明;
  • 然后由 Docker builder 創(chuàng)建映像;
  • 簡單的 docker run image 命令然后創(chuàng)建一個運行應(yīng)用程序的容器。

分析 Dockerfile

Dockerfile 是一個文件,其中包含有關(guān)組裝 Docker 映像(保存為 myimage )的說明:

  1. # 設(shè)置基本映像(主機操作系統(tǒng)) 
  2. FROM python:3.8 
  3. # 在容器中設(shè)置工作目錄 
  4. WORKDIR /code 
  5. # 將依賴項文件復(fù)制到工作目錄中 
  6. COPY requirements.txt . 
  7. # 安裝依賴項 
  8. RUN pip install -r requirements.txt 
  9. # 將本地src目錄的內(nèi)容復(fù)制到工作目錄 
  10. COPY src/ . 
  11. # 在容器啟動時運行的命令 
  12. CMD [ "python""./server.py" ] 

Dockerfile 是逐行編譯的,因此構(gòu)建器會生成圖像層并將其堆疊在先前的圖像上。

我們還可以在 build 命令的輸出中觀察到作為步驟執(zhí)行的 Dockerfile 指令。

  1. $ docker build -t myimage . 
  2. Sending build context to Docker daemon 6.144kB 
  3. Step 1/6 : FROM python:3.8 
  4. 3.8.3-alpine: Pulling from library/python 
  5. … 
  6. Status: Downloaded newer image for python:3.8.3-alpine 
  7. ---> 8ecf5a48c789 
  8. Step 2/6 : WORKDIR /code 
  9. ---> Running in 9313cd5d834d 
  10. Removing intermediate container 9313cd5d834d 
  11. ---> c852f099c2f9 
  12. Step 3/6 : COPY requirements.txt . 
  13. ---> 2c375052ccd6 
  14. Step 4/6 : RUN pip install -r requirements.txt 
  15. ---> Running in 3ee13f767d05 
  16. … 
  17. Removing intermediate container 3ee13f767d05 
  18. ---> 8dd7f46dddf0 
  19. Step 5/6 : COPY ./src . 
  20. ---> 6ab2d97e4aa1 
  21. Step 6/6 : CMD python server.py 
  22. ---> Running in fbbbb21349be 
  23. Removing intermediate container fbbbb21349be 
  24. ---> 27084556702b 
  25. Successfully built 70a92e92f3b5 
  26. Successfully tagged myimage:latest 

然后,我們可以看到映像位于本地映像存儲目錄中:

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

在開發(fā)過程中,我們希望花費盡可能少的時間,為 Python 服務(wù)重建映像。

注意:Docker 和 virtualenv 非常相似但又有所不同。Virtualenv 只允許我們在 Python 的依賴關(guān)系之間切換,無法使用主機操作系統(tǒng)。但是,使用Docker,你可以在任何操作系統(tǒng)上交換整個操作系統(tǒng):安裝并運行Python(例如 UBTUN,Debian,Alpine,甚至Windows Server Core)。因此,如果你的團隊工作需要驗證你的技術(shù),請使用Docker。如果不需要,可以使用 venv。

總結(jié)

在上文中,我們展示了如何把 Python 服務(wù)容器化。 希望此過程將變得更容易,并且能夠為你的項目提供更長的保質(zhì)期。同時,因為依賴關(guān)系的變化,也能降低你的代碼錯誤的可能性。

 

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2020-03-03 19:00:50

C語言數(shù)據(jù)科學(xué)

2024-10-06 13:41:25

2009-06-24 17:34:58

使用JSF的經(jīng)驗

2021-09-10 22:25:37

iOS蘋果安卓

2020-07-22 11:39:30

物聯(lián)網(wǎng)人工智能技術(shù)

2023-11-30 09:00:00

TypeScript開發(fā)

2021-02-28 07:47:41

數(shù)據(jù)庫密碼加密

2021-10-07 20:24:16

AIBI大數(shù)據(jù)

2020-08-17 08:17:00

大數(shù)據(jù)人工智能技術(shù)

2022-03-15 17:12:03

大數(shù)據(jù)機器學(xué)習(xí)人工智能

2020-02-05 08:47:31

數(shù)據(jù)科學(xué)編程數(shù)據(jù)庫

2021-10-27 13:51:54

Windows XP微軟系統(tǒng)

2017-07-04 19:02:17

ReacRedux 項目

2017-11-13 10:35:24

數(shù)據(jù)中心設(shè)計優(yōu)勢

2011-05-19 09:53:33

數(shù)據(jù)庫對象

2024-03-14 10:47:58

編程語言物聯(lián)網(wǎng)

2021-08-23 10:40:30

人工智能KubernetesAI

2018-05-02 09:18:17

Linux技巧嵌入式

2022-01-09 23:44:14

5G4G手機

2019-10-15 10:03:43

人工智能機器學(xué)習(xí)技術(shù)
點贊
收藏

51CTO技術(shù)棧公眾號