定製python基礎映象的方法

2021-09-19 19:19:28 字數 3023 閱讀 7347

前言

一些開源軟體依賴於許多python庫,如果採用容器化技術,事先配置好乙個安裝了所有依賴元件的基礎容器映象,這樣在軟體部署過程中,就不需要再為依賴的庫發愁了。

製作基礎映象的步驟

1) 登陸到容器管理機器上,切換root賬戶

2) 在容器管理機器上建立工作目錄,例如 my_work

3) 將依賴的python庫製作成清單檔案requirements.txt(具體語法參考pip命令相關文件),拷貝到容器管理機器上my_work目錄下,例如:

feedparser==5.2.1

gevent==1.1.2; sys_platform !='win32'and python_version <'3.7'

gevent==1.3.4; sys_platform !='win32'and python_version >='3.7'

greenlet==0.4.10; python_version <'3.7'

greenlet==0.4.13; python_version >='3.7'

html2text==2016.9.19

jinja2==2.8.1

libsass==0.12.3

lxml==3.7.1; sys_platform !='win32'and python_version <'3.7'

lxml==4.2.3; sys_platform !='win32'and python_version >='3.7'

lxml ; sys_platform =='win32'

ofxparse==0.16

passlib==1.6.5

pillow==4.0.0

psutil==4.3.1

psycopg2==2.7.3.1

4) 將製作基礎映象的dockerfile拷貝到容器管理機器上my_work目錄下,例如:

from ***.cn/cloud-manage/python:3.6# 已有的基礎映象,安裝了python3.6環境

run pip install --upgrade pip            # 公升級pip,防止部分元件無法安裝

run apt-get update                    # 公升級apt-get,防止部分元件無法安裝

run apt-get install -y --allow-unauthenticated libldap2-dev libsasl2-dev      # 安裝一些python庫依賴的本地模組(c/c++),忽略未認證的簽名,忽略提示訊息

copy ./requirements.txt ./              # 把容器管理機器上my_work目錄下的清單檔案拷貝到容器中

run pip install -r ./requirements.txt --ignore-installed   # 安裝清單檔案中的所有python庫,忽略檔案衝突

5) 在容器管理機器上my_work目錄下執行以下命令,完成映象的製作和發布

export tag_version=1# 設定基礎映象版本號

export tag_name=python3.6_4***     # 設定基礎映象名稱,建議命名時能體現其用途

docker build -t ***.cn/cloud-manage/$_v$ .

docker images |grep"$"# 確認容器建立成功

docker push ***.cn/cloud-manage/$_v$

學習。。。python定製方法

class chain object def init self,path self.path path def getattr self,path return chain s s self.path,path def call self,path return chain s s self.pa...

整理Python(定製類 特殊方法)

1.str 和 repr 如果把乙個類的例項變成str,就需要實現特殊方法 str class person object def init self,name,gender self.name name self.gender gender def str self return person s...

python的容器定製

python的容器型別有 序列型別 list,tuple,str 對映型別 dict 都是屬於容器型別,裡面存放的是各種各樣的物件 容器型別的協議 1.定製不可變容器型別 例如tuple和str 需要定義 len 和 getitem 兩個魔法方法 2.定製可變容器型別 例如 list.dict,se...