小白程序員面臨的最大困難之一就是理解環境的概念。環境是指程序員進行編碼的系統,這聽起來貌似很容易,但隨著程序員職業生涯的推薦,程序員會逐漸體會到維護“環境”是一件多么困難的事情。
這主要是因為庫、IDE(集成開發環境),甚至Python代碼都需要經過更新和版本升級。有時更新一個庫,某段代碼就會出錯,需要重新修改代碼。如果同時開發多個項目,就會引起依賴沖突,當某段代碼導致另一段代碼錯誤時,事情就會變得很棘手了。
另外,如果想將項目共享給一個在不同操作系統上的工作伙伴,或者將在Mac上構建的項目交付到另一個操作系統的生產服務器上,就不得不重新配置代碼了。
為了解決這些問題,將項目和項目所處的環境分離的方法被稱為“容器”。容器是支持環境運行的地方,與系統上的其他內容東西相分離。一旦定義了容器中的內容,重建環境就很容易了,甚至可以實現與同事共享項目。
要求
啟動Docker,需要安裝軟件:
windows或macOS:安裝Docker Desktop
linux:安裝Docker,然后編寫Docker
Python服務包
假設正在創建一個名為server.py的Flask服務,并設置該文件的內容,如下:
如上述,需保留代碼依賴關系的記錄。因此創建一個關于需求的txt文件,包含以下內容:
Flask==1.1.1
因此,服務包有以下結構:
該結構十分符合邏輯(源文件保存在獨立目錄中)。若執行Python程序,我們需要安裝并運行Python解釋器。接下來可以在本地運行這個程序,如果有15個項目同時運行,在一個容器中運行可以避免與其他項目發生沖突。
Dockerfile
運行Python代碼,需要將容器打包為Docker鏡像,然后運行。操作如下:
創建一個包含構建鏡像所需指令的Dockerfile
然后通過Docker生成器創建鏡像
簡單的docker run 命令就可以創建一個正在運行應用程序的容器
Dockerfile分析
Dockerfile是一個包含合成Docker鏡像說明的文件(命名為myimage):
Dockerfile是逐行編譯的,因此生成器會生成一個圖層,并將其疊加在之前的圖像上。在build命令的輸出中,可以看到作為步驟執行的Dockerfile指令。
然后可以發現鏡像存儲在本地圖像中:
在開發過程中,可能需要多次為Python服務重新構建鏡像,所以希望花費盡可能少的時間。
Docker和virtualenv非常相似,但又有所不同。Virtualenv允許你在Python依賴關系中切換,但必須使用主機操作系統。然而,使用Docker就可以在任何操作系統上安裝和運行Python(包括Ubuntu、Debian、Alpine以及Windows Server Core)。
因此,如果你在一個團隊中工作,希望可以在以后證明你的技術,就要使用Docker。如果不用docker,venv也是不錯的,但它不是通向未來的憑證。
本文展示了如何創建Python服務包,并希望簡化過程,使程序員的項目維持更長時間。因為當依賴關系發生變化時,它不太可能出現代碼錯誤。
責編AJX
-
數據
+關注
關注
8文章
6892瀏覽量
88828 -
python
+關注
關注
56文章
4782瀏覽量
84455 -
Docker
+關注
關注
0文章
454瀏覽量
11815
發布評論請先 登錄
相關推薦
評論