Come Eseguire uno Script Python Utilizzando Docker

Esegui Script Python Docker

Eseguire script Python è uno dei compiti più comuni nell’automazione. Tuttavia, gestire le dipendenze tra diversi sistemi può essere complicato. È qui che entra in gioco Docker. Docker ti consente di impacchettare il tuo script Python insieme a tutte le sue dipendenze necessarie in un contenitore, garantendo che venga eseguito allo stesso modo su qualsiasi macchina. In questa guida passo-passo, ti guideremo attraverso il processo di creazione di uno script Python reale e di esecuzione all’interno di un contenitore Docker.

Perché Usare Docker per Script Python

Quando lavori con script Python, le cose possono diventare disordinate/complicate molto rapidamente. Progetti diversi necessitano di librerie diverse, e ciò che funziona sulla tua macchina potrebbe non funzionare su quella di qualcun altro. Docker risolve questo problema impacchettando il tuo script e il suo ambiente insieme. Quindi, invece di dire “Funziona sulla mia macchina”, puoi essere sicuro che funzioni allo stesso modo ovunque.

Mantiene anche il tuo sistema pulito. Non devi installare ogni pacchetto Python globalmente o preoccuparti dei conflitti di versione. Tutto rimane all’interno del contenitore.

Se stai distribuendo o passando il tuo script a qualcun altro, Docker rende tutto ciò facile. Nessuna istruzione di configurazione, niente “installa questo e quello”. Solo un comando, e si esegue.

Scrivi lo Script Python

Creiamo una directory di progetto per mantenere il tuo script Python e il Dockerfile. Una volta creata, naviga in questa directory utilizzando il comando cd:

mkdir docker_file_organizer  
cd docker_file_organizer

Crea uno script chiamato “organize_files.py” per scansionare una directory e raggruppare i file in cartelle in base alle loro estensioni:

nano organize_files.py

Incolla il seguente codice nel file “organize_file.py”. Qui, utilizziamo due moduli Python predefiniti, chiamati os e shutil, per gestire i file e creare directory dinamicamente:

import os  
import shutil  
  
SOURCE_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"Spostato: {fname} → {ext}/")  
    except Exception as e:  
        print(f"Errore nell'organizzazione dei file: {e}")  
  
if __name__ == "__main__":  
    organize_by_extension(SOURCE_DIR)

In questo script, organizziamo i file in una data directory in base alle loro estensioni. Utilizziamo il modulo os per elencare i file, controllare se ogni elemento è un file, estrarre la sua estensione e creare cartelle chiamate con quelle estensioni (se non esistono già). Poi, utilizziamo il modulo shutil per spostare ogni file nella sua cartella corrispondente. Per ogni spostamento, stampiamo un messaggio che mostra la nuova posizione del file.

Crea il Dockerfile

Ora, crea un Dockerfile per definire l’ambiente in cui il tuo script verrà eseguito:

FROM python:latest  
LABEL maintainer="[email protected]"  
WORKDIR /usr/src/app  
COPY organize_files.py .  
CMD ["python", "./organize_files.py"]

Utilizziamo questo Dockerfile per creare un contenitore con Python, aggiungere il nostro script e assicurarci che lo script venga eseguito automaticamente quando il contenitore si avvia:

Crea Docker File

Costruisci l’Immagine Docker

Prima di poter costruire l’immagine Docker, devi prima installare Docker. Dopo di che, esegui il seguente comando per impacchettare tutto in un’immagine Docker:

sudo docker build -t file-organizer .

Legge il nostro Dockerfile e mette insieme la configurazione di Python e il nostro script in modo che siano pronti per essere eseguiti in un’unica immagine di contenitore:

Costruisci Immagine Docker

Crea una Cartella di Esempio con File

Per vedere il nostro script in azione, creiamo una cartella di test chiamata “sample_files” con alcuni file di diversi tipi. Abbiamo creato questi file solo per rendere la cartella un po’ disordinata e vedere come il nostro script Python la gestisce:

mkdir ~/sample_files  
touch ~/sample_files/test.txt  
touch ~/sample_files/image.jpg  
touch ~/sample_files/data.csv

Esegui lo Script all’Interno di Docker

Infine, eseguiamo il nostro contenitore Docker e montiamo la cartella di esempio al suo interno. Il flag -v monta la tua directory locale “~/sample_files” nella directory “/files” nel contenitore, il che consente allo script Python di leggere e organizzare i file sulla tua macchina host:

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

Qui, utilizziamo l’opzione --rm per rimuovere automaticamente il contenitore dopo che ha finito di eseguire, il che salva spazio su disco:

Alla fine, utilizziamo il comando tree per controllare se i file sono stati ordinati in cartelle in base alle loro estensioni:

tree sample_files

Verifica Risultato con Comando Tree

Nota: Il comando tree non è preinstallato sulla maggior parte dei sistemi. Puoi facilmente installarlo utilizzando un gestore di pacchetti come apt su Ubuntu, brew su macOS, e così via.

Considerazioni Finali

Con il tuo script Python in esecuzione all’interno di Docker, sei pronto per sfruttare appieno un ambiente di sviluppo pulito, portatile e coerente. Puoi facilmente riutilizzare questo flusso di lavoro containerizzato per altri compiti di automazione, condividere il tuo script senza preoccuparti delle dipendenze e mantenere il tuo sistema privo di ingombri. Come prossimo passo, considera di esplorare come costruire immagini Docker multi-script, pianificare contenitori con cron job, o integrare i tuoi script con altri strumenti come Git, Jenkins, o anche piattaforme cloud per semplificare il tuo processo di automazione e distribuzione.