
Automatyzacja zadań za pomocą skryptów Pythona jest powszechną praktyką wśród deweloperów. Jednak zapewnienie, że te skrypty działają bezproblemowo w wielu systemach, może stanowić poważne wyzwanie, głównie ze względu na zarządzanie zależnościami. To właśnie tutaj Docker okazuje się nieoceniony, umożliwiając hermetyzację skryptu Pythona i jego powiązanych zależności w przenośnym kontenerze. Zapewnia to, że skrypt działa jednolicie w różnych środowiskach. W tym kompleksowym przewodniku przedstawimy proces tworzenia praktycznego skryptu Pythona i wykonywania go w kontenerze Dockera.
Zalety korzystania z Dockera dla Pythona
Zarządzanie zależnościami Pythona może szybko stać się uciążliwe, zwłaszcza gdy różne projekty wymagają sprzecznych pakietów. Docker rozwiązuje te problemy, łącząc skrypt z jego środowiskiem. Eliminuje to powszechną wymówkę „Działa na moim komputerze”, zapewniając spójną wydajność na wszystkich platformach.
Ponadto Docker pomaga utrzymać czyste środowisko programistyczne, zapobiegając instalacji wielu pakietów Pythona globalnie. Wszystkie zależności są zawarte w środowisku Docker, co usprawnia zarządzanie projektami.
Podczas przekazywania skryptu innym użytkownikom lub wdrażania go, Docker upraszcza proces. Nie ma potrzeby stosowania obszernych instrukcji instalacji — do uruchomienia skryptu wystarczy jedno polecenie.
Tworzenie skryptu Pythona
Najpierw utwórz katalog projektu, w którym umieścisz skrypt Pythona i Dockerfile. Użyj następujących poleceń, aby skonfigurować katalog:
mkdir docker_file_organizercd docker_file_organizer
Następnie utwórz skrypt o nazwie organize_files.py, który przeskanuje określony katalog i skategoryzuje pliki na podstawie ich rozszerzeń:
nano organize_files.py
Wstaw następujący kod do pliku organize_files.py. Ten skrypt wykorzystuje wbudowane moduły os
i shutil
do dynamicznego obsługiwania plików i generowania katalogów:
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)
Ten skrypt organizuje pliki w określonym katalogu według ich rozszerzeń. Wykorzystuje os
moduł do listy plików, sprawdzania, czy każdy element jest plikiem, wyodrębniania jego rozszerzenia i tworzenia folderów nazwanych na jego cześć. Na koniec shutil
moduł ułatwia przenoszenie każdego pliku do odpowiedniego folderu, czemu towarzyszy komunikat wskazujący nową lokalizację.
Definiowanie pliku Dockerfile
Teraz utwórzmy plik Dockerfile określający środowisko dla Twojego skryptu:
FROM python:latestLABEL maintainer="[email protected]"WORKDIR /usr/src/appCOPY organize_files.py. CMD ["python", "./organize_files.py"]
Ten plik Dockerfile konfiguruje kontener z Pythonem, kopiuje do niego skrypt i zapewnia automatyczne wykonanie skryptu po uruchomieniu kontenera:

Budowanie obrazu Dockera
Przed zbudowaniem obrazu Dockera upewnij się, że Docker jest zainstalowany w Twoim systemie. Następnie możesz spakować wszystko do obrazu za pomocą następującego polecenia:
sudo docker build -t file-organizer.
To polecenie odczytuje plik Dockerfile i łączy niezbędną konfigurację języka Python wraz ze skryptem w pojedynczy obraz kontenera:

Tworzenie przykładowego katalogu
Aby zobaczyć nasz skrypt w działaniu, utwórz folder testowy o nazwie sample_files i wypełnij go różnymi typami plików, aby symulować zagracone środowisko:
mkdir ~/sample_filestouch ~/sample_files/test.txttouch ~/sample_files/image.jpgtouch ~/sample_files/data.csv
Wykonywanie skryptu wewnątrz Dockera
Na koniec uruchom kontener Docker i zamontuj katalog sample_files w kontenerze.-v
Flaga łączy Twój ~/sample_files
katalog lokalny z katalogiem kontenera /files
, umożliwiając skryptowi Python dostęp do plików i ich organizowanie:
docker run --rm -v ~/sample_files:/files file-organizer
Użycie --rm
flagi spowoduje automatyczne usunięcie kontenera po zakończeniu operacji, co zmniejszy zużycie miejsca na dysku:

Aby sprawdzić czy pliki zostały posortowane poprawnie należy skorzystać z tree
polecenia:
tree sample_files

Wniosek
Dzięki pomyślnemu uruchomieniu skryptu Python w kontenerze Docker możesz skorzystać z usprawnionego, przenośnego i spójnego środowiska programistycznego. To podejście kontenerowe nie tylko ułatwia ponowne wykorzystanie w innych zadaniach automatyzacji, ale także upraszcza udostępnianie skryptów bez obaw o zależności, dzięki czemu system pozostaje uporządkowany. W ramach przyszłych działań rozważ zbadanie, w jaki sposób tworzyć obrazy Docker z wieloma skryptami, automatyzować zadania za pomocą zadań cron lub integrować skrypty z niezbędnymi narzędziami, takimi jak Git, Jenkins lub usługi w chmurze, aby jeszcze bardziej udoskonalić przepływy pracy automatyzacji.
Dodaj komentarz