使用 Docker 運行 Python 腳本:逐步指南

使用 Docker 運行 Python 腳本:逐步指南

使用 Python 腳本自動執行任務是開發人員的普遍做法。然而,確保這些腳本在多個系統之間無縫運行可能面臨巨大的挑戰,這主要源自於依賴項管理。 Docker 的價值就在於此,它允許您將 Python 腳本及其相關依賴項封裝在一個可移植的容器中。這確保了腳本在不同環境中的一致執行。在本指南中,我們將概述編寫實用 Python 腳本並在 Docker 容器中執行該腳本的過程。

使用 Docker for Python 的優勢

管理 Python 依賴項很快就會變得繁瑣,尤其是在不同專案需要衝突的軟體包時。 Docker 透過將腳本與其環境捆綁在一起來解決這些問題。這消除了「它在我的機器上可以正常工作」的常見藉口,確保了所有平台上的一致性能。

此外,Docker 還可以防止在全域範圍內安裝大量 Python 套件,從而維護乾淨的開發環境。所有相依性都包含在 Docker 環境中,從而簡化了專案管理。

當您將腳本傳遞給其他使用者或部署時,Docker 簡化了流程。無需繁瑣的安裝說明,只需一個命令即可執行腳本。

建立 Python 腳本

首先,建立一個專案目錄來存放你的 Python 腳本和 Dockerfile。使用以下指令設定目錄:

mkdir docker_file_organizercd docker_file_organizer

接下來,建立一個名為organise_files.py的腳本,該腳本將掃描指定的目錄並根據檔案副檔名對檔案進行分類:

nano organize_files.py

將以下程式碼插入organise_files.py檔案中。此腳本利用內建的osshutil模組動態處理檔案並產生目錄:

import osimport shutilSOURCE_DIR = "/files"def organize_by_extension(directory): try: for fname in os.listdir(directory): path = os.path.join(directory, fname) if os.path.isfile(path): ext = fname.split('.')[-1].lower() if '.' in fname else 'no_extension' dest_dir = os.path.join(directory, ext) os.makedirs(dest_dir, exist_ok=True) shutil.move(path, os.path.join(dest_dir, fname)) print(f"Moved: {fname} → {ext}/") except Exception as e: print(f"Error organizing files: {e}")if __name__ == "__main__": organize_by_extension(SOURCE_DIR)

此腳本按擴展名組織指定目錄中的檔案。它使用該os模組列出文件,驗證每個項目是否為文件,提取其擴展名,並創建以其擴展名命名的資料夾。最後,該shutil模組可協助將每個檔案移至其對應的資料夾中,並附帶一條指示新位置的訊息。

定義 Dockerfile

現在,讓我們建立一個 Dockerfile 來概述腳本的環境:

FROM python:latestLABEL maintainer="[email protected]"WORKDIR /usr/src/appCOPY organize_files.py. CMD ["python", "./organize_files.py"]

此 Dockerfile 使用 Python 設定一個容器,將腳本複製到其中,並確保腳本在容器啟動時自動執行:

建立 Docker 文件

建置 Docker 映像

在建置 Docker 映像之前,請確保您的系統上已安裝 Docker。然後,你可以使用以下命令將所有內容打包到鏡像中:

sudo docker build -t file-organizer.

此命令讀取 Dockerfile 並將必要的 Python 設定與腳本一起組裝到單一容器映像中:

建置 Docker 映像

建立範例目錄

為了觀察腳本的運作情況,請建立一個名為sample_files的測試資料夾,並在其中填入各種檔案類型以模擬混亂的環境:

mkdir ~/sample_filestouch ~/sample_files/test.txttouch ~/sample_files/image.jpgtouch ~/sample_files/data.csv

在 Docker 中執行腳本

最後,啟動 Docker 容器並將sample_files目錄掛載到容器中。該-v標誌將本機~/sample_files目錄連接到容器的/files目錄,從而允許 Python 腳本存取和組織檔案:

docker run --rm -v ~/sample_files:/files file-organizer

透過使用該--rm標誌,容器將在完成後自動刪除,從而減少磁碟空間消耗:

在 Docker 中運行腳本

若要驗證檔案是否已正確排序,請使用下列tree命令:

tree sample_files

使用樹命令驗證結果

結論

成功在 Docker 容器中執行 Python 腳本後,您就可以充分利用精簡、可移植且一致的開發環境。這種容器化方法不僅有助於重複使用其他自動化任務,還能簡化腳本共享,無需擔心依賴關係,從而保持系統井然有序。未來,您可以考慮探索如何建立多腳本 Docker 映像、使用 cron 作業自動執行任務,或將腳本與 Git、Jenkins 或雲端服務等重要工具集成,以進一步增強您的自動化工作流程。

來源和圖片

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *