成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

都2020年了,居然還有人沒有在數據科學項目中使用Docker?

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

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

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

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

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

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

要求

首先,我們需要安裝一些設置:

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

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

對Python服務進行容器化

假設我們正在創建一個名為 server.py 的 Flask 服務,并假設文件內容如下:

  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'

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

  1. Flask==1.1.1 

因此,我們的軟件包需要具有以下結構:

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

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

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

讓我們進入容器化。

Dockerfile

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

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

分析 Dockerfile

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

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

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

我們還可以在 build 命令的輸出中觀察到作為步驟執行的 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 

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

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

總結

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

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2020-03-03 19:00:50

C語言數據科學

2024-10-06 13:41:25

2009-06-24 17:34:58

使用JSF的經驗

2021-09-10 22:25:37

iOS蘋果安卓

2020-07-22 11:39:30

物聯網人工智能技術

2021-02-28 07:47:41

數據庫密碼加密

2021-10-07 20:24:16

AIBI大數據

2023-11-30 09:00:00

TypeScript開發

2020-08-17 08:17:00

大數據人工智能技術

2022-03-15 17:12:03

大數據機器學習人工智能

2020-02-05 08:47:31

數據科學編程數據庫

2021-10-27 13:51:54

Windows XP微軟系統

2017-11-13 10:35:24

數據中心設計優勢

2011-05-19 09:53:33

數據庫對象

2017-07-04 19:02:17

ReacRedux 項目

2024-03-14 10:47:58

編程語言物聯網

2018-05-02 09:18:17

Linux技巧嵌入式

2021-08-23 10:40:30

人工智能KubernetesAI

2019-10-15 10:03:43

人工智能機器學習技術

2022-01-09 23:44:14

5G4G手機
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品欧美激情在线观看 | 高清一区二区视频 | 欧美在线观看一区 | 欧美一级欧美一级在线播放 | 亚洲精品久久久一区二区三区 | 欧美国产视频 | 成人性生交大片免费看r链接 | 久久久婷 | 亚洲人久久 | 国产三级电影网站 | 国产精品久久久久久久久久三级 | 日本aaa视频| 午夜小视频免费观看 | www.欧美视频| 三级黄色片在线观看 | 久久精品二区亚洲w码 | 亚洲视频中文字幕 | 国产麻豆乱码精品一区二区三区 | 国产精品99久久久久久人 | 在线观看视频91 | 亚洲男女视频在线观看 | xxxxx黄色片 欧美一区免费 | 在线亚洲电影 | 亚洲国产中文字幕 | 秋霞精品| 国产精品成人一区二区三区 | www.伊人.com | 国产99视频精品免费播放照片 | 中文成人在线 | 亚洲视频免费在线观看 | 日韩高清中文字幕 | www.99re| 亚洲韩国精品 | 夜夜艹 | 中文字幕在线看人 | 99re在线视频 | 成人免费在线播放视频 | 欧美不卡视频 | 在线婷婷 | 欧美xxxx色视频在线观看免费 | 天堂成人国产精品一区 |