
L’automazione delle attività tramite script Python è una pratica diffusa tra gli sviluppatori. Tuttavia, garantire che questi script vengano eseguiti senza problemi su più sistemi può presentare sfide significative, principalmente a causa della gestione delle dipendenze.È qui che Docker si rivela prezioso, consentendo di incapsulare lo script Python e le relative dipendenze in un contenitore portabile. Questo garantisce che lo script funzioni in modo uniforme in diversi ambienti. In questa guida completa, illustreremo il processo di creazione di uno script Python pratico e la sua esecuzione in un contenitore Docker.
I vantaggi dell’utilizzo di Docker per Python
Gestire le dipendenze Python può diventare rapidamente macchinoso, soprattutto quando progetti diversi richiedono pacchetti in conflitto. Docker risolve questi problemi integrando lo script nel suo ambiente. Questo elimina la scusa comune del “Funziona sulla mia macchina”, garantendo prestazioni costanti su tutte le piattaforme.
Inoltre, Docker contribuisce a mantenere un ambiente di sviluppo pulito impedendo l’installazione di numerosi pacchetti Python a livello globale. Tutte le dipendenze sono contenute nell’ambiente Docker, semplificando la gestione dei progetti.
Quando si passa il proprio script ad altri utenti o lo si distribuisce, Docker semplifica il processo. Non sono necessarie istruzioni di installazione complesse: basta un singolo comando per eseguire lo script.
Creazione dello script Python
Per prima cosa, crea una directory di progetto in cui archiviare lo script Python e il Dockerfile. Utilizza i seguenti comandi per impostare la directory:
mkdir docker_file_organizercd docker_file_organizer
Successivamente, crea uno script denominato organize_files.py che analizzerà una directory specificata e categorizzerà i file in base alle loro estensioni:
nano organize_files.py
Inserisci il seguente codice nel file organize_files.py. Questo script utilizza i moduli predefiniti os
e shutil
per gestire dinamicamente i file e generare directory:
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)
Questo script organizza i file in una directory specificata in base alla loro estensione. Utilizza il os
modulo per elencare i file, verificare se ogni elemento è un file, estrarne l’estensione e creare cartelle con il loro nome. Infine, il shutil
modulo semplifica lo spostamento di ciascun file nella rispettiva cartella, accompagnato da un messaggio che indica la nuova posizione.
Definizione del Dockerfile
Ora creiamo un Dockerfile che delinea l’ambiente per il tuo script:
FROM python:latestLABEL maintainer="[email protected]"WORKDIR /usr/src/appCOPY organize_files.py. CMD ["python", "./organize_files.py"]
Questo Dockerfile configura un contenitore con Python, copia lo script al suo interno e garantisce che lo script venga eseguito automaticamente all’avvio del contenitore:

Creazione dell’immagine Docker
Prima di creare l’immagine Docker, assicurati che Docker sia installato sul tuo sistema. Puoi quindi impacchettare il tutto in un’immagine con il seguente comando:
sudo docker build -t file-organizer.
Questo comando legge il Dockerfile e assembla la configurazione Python necessaria insieme allo script in un’unica immagine contenitore:

Creazione di una directory di esempio
Per osservare il nostro script in azione, creiamo una cartella di prova denominata sample_files e la riempiamo con vari tipi di file per simulare un ambiente disordinato:
mkdir ~/sample_filestouch ~/sample_files/test.txttouch ~/sample_files/image.jpgtouch ~/sample_files/data.csv
Esecuzione dello script all’interno di Docker
Infine, avvia il tuo contenitore Docker e monta la directory sample_files nel contenitore. Il -v
flag collega la tua ~/sample_files
directory locale alla /files
directory del contenitore, consentendo allo script Python di accedere e organizzare i file:
docker run --rm -v ~/sample_files:/files file-organizer
Utilizzando il --rm
flag, il contenitore verrà rimosso automaticamente al termine dell’operazione, riducendo il consumo di spazio su disco:

Per verificare che i file siano stati ordinati correttamente, utilizzare il tree
comando:
tree sample_files

Conclusione
Eseguendo correttamente il tuo script Python all’interno di un contenitore Docker, puoi sfruttare un ambiente di sviluppo ottimizzato, portabile e coerente. Questo approccio containerizzato non solo facilita il riutilizzo per altre attività di automazione, ma semplifica anche la condivisione degli script senza problemi di dipendenze, mantenendo così il sistema organizzato. In futuro, potresti valutare di esplorare come creare immagini Docker multi-script, automatizzare le attività con cron job o integrare i tuoi script con strumenti essenziali come Git, Jenkins o servizi cloud per migliorare ulteriormente i tuoi flussi di lavoro di automazione.
Lascia un commento