Esecuzione di script Python con Docker: una guida passo passo

Esecuzione di script Python con Docker: una guida passo passo

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 ose shutilper 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 osmodulo per elencare i file, verificare se ogni elemento è un file, estrarne l’estensione e creare cartelle con il loro nome. Infine, il shutilmodulo 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:

Crea file Docker

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:

Crea immagine Docker

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 -vflag collega la tua ~/sample_filesdirectory locale alla /filesdirectory del contenitore, consentendo allo script Python di accedere e organizzare i file:

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

Utilizzando il --rmflag, il contenitore verrà rimosso automaticamente al termine dell’operazione, riducendo il consumo di spazio su disco:

Esegui script in Docker

Per verificare che i file siano stati ordinati correttamente, utilizzare il treecomando:

tree sample_files

Verifica il risultato con il comando Tree

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.

Fonte e immagini

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *