Ejecución de scripts de Python con Docker: guía paso a paso

Ejecución de scripts de Python con Docker: guía paso a paso

Automatizar tareas mediante scripts de Python es una práctica común entre los desarrolladores. Sin embargo, garantizar que estos scripts se ejecuten sin problemas en múltiples sistemas puede presentar desafíos importantes, principalmente debido a la gestión de dependencias. Aquí es donde Docker resulta invaluable, ya que permite encapsular el script de Python y sus dependencias asociadas en un contenedor portátil. Esto garantiza que el script funcione de forma uniforme en diferentes entornos. En esta guía completa, describiremos el proceso de creación de un script de Python práctico y su ejecución dentro de un contenedor Docker.

Las ventajas de usar Docker para Python

Gestionar las dependencias de Python puede volverse rápidamente engorroso, especialmente cuando diferentes proyectos requieren paquetes conflictivos. Docker soluciona estos problemas integrando el script con su entorno. Esto elimina la excusa habitual de «Funciona en mi equipo», lo que garantiza un rendimiento consistente en todas las plataformas.

Además, Docker ayuda a mantener un entorno de desarrollo limpio al evitar la instalación de numerosos paquetes de Python globalmente. Todas las dependencias se encuentran dentro del entorno Docker, lo que agiliza la gestión de proyectos.

Al pasar tu script a otros usuarios o implementarlo, Docker simplifica el proceso. No necesitas instrucciones de instalación extensas: un solo comando es suficiente para ejecutarlo.

Creación del script de Python

Primero, crea un directorio de proyecto para tu script de Python y tu Dockerfile. Usa los siguientes comandos para configurar el directorio:

mkdir docker_file_organizercd docker_file_organizer

A continuación, cree un script llamado arrange_files.py que escaneará un directorio específico y categorizará los archivos según sus extensiones:

nano organize_files.py

Inserte el siguiente código en el archivo arrange_files.py. Este script utiliza los módulos integrados osy shutilpara gestionar archivos dinámicamente y generar directorios:

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)

Este script organiza los archivos en un directorio específico según sus extensiones. Utiliza el osmódulo para listar los archivos, verificar si cada elemento es un archivo, extraer su extensión y crear carpetas con su nombre. Finalmente, el shutilmódulo facilita el traslado de cada archivo a su carpeta correspondiente, acompañado de un mensaje que indica la nueva ubicación.

Definición del Dockerfile

Ahora, vamos a crear un Dockerfile que describa el entorno para su script:

FROM python:latestLABEL maintainer="[email protected]"WORKDIR /usr/src/appCOPY organize_files.py. CMD ["python", "./organize_files.py"]

Este Dockerfile configura un contenedor con Python, copia su script en él y garantiza que el script se ejecute automáticamente al iniciar el contenedor:

Crear archivo Docker

Construyendo la imagen de Docker

Antes de crear la imagen de Docker, asegúrese de que Docker esté instalado en su sistema. Después, puede empaquetar todo en una imagen con el siguiente comando:

sudo docker build -t file-organizer.

Este comando lee el Dockerfile y ensambla la configuración de Python necesaria junto con su script en una imagen de contenedor singular:

Crear imagen de Docker

Creación de un directorio de muestra

Para observar nuestro script en acción, cree una carpeta de prueba llamada sample_files y complétela con varios tipos de archivos para simular un entorno desordenado:

mkdir ~/sample_filestouch ~/sample_files/test.txttouch ~/sample_files/image.jpgtouch ~/sample_files/data.csv

Ejecutar el script dentro de Docker

Finalmente, inicie su contenedor Docker y monte el directorio sample_files en él. La -vbandera conecta su ~/sample_filesdirectorio local con el /filesdirectorio del contenedor, lo que permite que el script de Python acceda y organice los archivos:

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

Al usar la --rmbandera, el contenedor se eliminará automáticamente al finalizar, lo que reducirá el consumo de espacio en disco:

Ejecutar script en Docker

Para verificar que los archivos se han ordenado correctamente, utilice el treecomando:

tree sample_files

Verificar resultado con el comando de árbol

Conclusión

Con su script de Python ejecutándose correctamente en un contenedor Docker, puede aprovechar un entorno de desarrollo optimizado, portátil y consistente. Este enfoque contenedorizado no solo facilita la reutilización para otras tareas de automatización, sino que también simplifica el uso compartido de sus scripts sin preocuparse por las dependencias, manteniendo así su sistema organizado. Como proyecto futuro, considere explorar cómo crear imágenes Docker multiscript, automatizar tareas con trabajos cron o integrar sus scripts con herramientas esenciales como Git, Jenkins o servicios en la nube para optimizar aún más sus flujos de trabajo de automatización.

Fuente e imágenes

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *