Come Eseguire uno Script Python Utilizzando 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_organizerCrea uno script chiamato “organize_files.py” per scansionare una directory e raggruppare i file in cartelle in base alle loro estensioni:
nano organize_files.pyIncolla 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:

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:

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.csvEsegui 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-organizerQui, 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
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.