Código utilizado para ejecutar edemineduc/etl
Permite a los proveedores de los LCD encriptar su base de datos y convertir sus datos al formato SQLite necesario para luego subirlos al validador del estándar de datos. Las instrucciones para descargar, desplegar y ejecutar los scripts del contenedor se encuentran en https://www.ede.mineduc.cl/desarrolladores/contenedor. Puede encontrar un diagrama de clases Aquí
Pasos para ejecutar el código:
-
Instalar Docker desde su [https://www.docker.com/get-started/](Sitio web). Descarga recomendada: Docker Desktop. Requerimientos mínimos: Linux, Windows 10 o superior, Mac OSX
-
Reiniciar el computador
-
Si usas Windows, instalar WSL2 (Windows subsystem for linux), esto para Windows 10 o superior
-
Reiniciar el computador
-
Abrir Docker Desktop, Si se requiere, darle permisos de administrador para que se inicie el servicio (en linux, simplemente inicie el servicio usando systemctl u otro)
-
Abrir una terminal de PowerShell o Terminal.
Consejo: Apretar Click derecho + Mayus en cualquier carpeta, y aparecerá la opción de abrir PowerShell. 7. Clonar (o descargar y descomprimir) Repositorio de GitHub: https://github.com/Admin-EDE/DockerEdeCode
- Descargar la imagen del contenedor:
docker pull edemineduc/etl
Si aparece un error indicando que no está en ejecución el servicio, puede ser un error en el paso 3 o 4, reiniciar el pc, ejecutar el Docker Desktop y ver que está todo bien, ejecutarlo en modo administrador, y si está andando el servicio y da error, revisar que la terminal tenga acceso a ese servicio, que el usuario tenga acceso al servicio.
- Ejecutar el comando de ayuda
docker run -it --rm --name etl -v {ruta_full_del_directorio_local}:/usr/src/ede -w /usr/src/ede edemineduc/etl python3 parseCSVtoEDE.py --help
Donde dice {ruta_full_del_directorio_local} reemplazar con el directorio del repositorio GitHub descargado previamente. En mi caso de ejemplo quedaría:
docker run -it --rm --name etl -v C:\Users\erick\OneDrive\Documentos\Trabajo\DockerEdeCode:/usr/src/ede -w /usr/src/ede edemineduc/etl python3 parseCSVtoEDE.py --help
Si hay espacios es posible que escribiendo el directorio entre comillas funcione, aunque no lo he probado Reemplazar “--help” con el comando que se quiera, como parse, insert, update, check
- El comando PARSE transforma el contenido del JSON.zip en varios archivos CSV. Uno por cada tabla
docker run -it --rm --name etl -v D:\dockerETL:/usr/src/ede -w /usr/src/ede edemineduc/etl python3 parseCSVtoEDE.py parse json .\json.zip
- El comando INSERT lee todos los archivos csv y los inserta en una base de datos encriptada, que solo la Superintendencia de Educación puede leer.
docker run -it --rm --name etl -v D:\dockerETL:/usr/src/ede -w /usr/src/ede edemineduc/etl python3 parseCSVtoEDE.py insert
- El comando CHECK reporta si la información contenida en la base de datos cumple con las reglas de validación del Estándar de Datos para la Educación.
docker run -it --rm --name etl -v D:\dockerETL:/usr/src/ede -w /usr/src/ede edemineduc/etl python3 parseCSVtoEDE.py check {frase_secreta} .\file.db
docker run -it --rm --name etl -v {ruta_full_del_directorio_local}:/usr/src/ede -w /usr/src/ede edemineduc/etl python3 parseCSVtoEDE.py --help
-
docker: comando/aplicación a ejecutarse
-
run: instrucción a ejecutarse, se utiliza para ejecutar un comando en un contenedor (ejecuta o “enciende” la imagen del contenedor usando los parámetros dados, y luego ejecuta la instrucción o comando dado al final si está la opción -it dada) la documentación completa está en https://docs.docker.com/engine/reference/run/ La ejecución típica sin ningún parametro de este comando sería
docker run edemineduc/etl echo "hola mundo"
Que ejecuta "echo hola mundo" en la consola del contenedor -
-it: Son dos parámetros unidos:
- -i: Conecta el Standard input (STDIN, la entrada de la consola) del contenedor, con el STDIN de la terminal donde se está ejecutando ésta instrucción (permite entonces enviar comandos al contenedor)
- -t: Crea una pseudo terminal al interior del contenedor para poder enviar comandos a ésta Ambos comandos se suelen usar juntos, por ello existe la opción -it que evita usar “-i -t”
-
--rm: Cierra y elimina de la memoria RAM el contenedor una vez que se ejecutó el comando dado. Si no se pone ésto, el contenedor queda encendido esperando comandos.
-
–name etl: identificador del contenedor en la memoria RAM, sirve para enviarle datos mientras está en ejecución o para simplemente saber su nombre, en este caso es para eso, ponerle un nombre y ya, si no se usa este parámetro se le crea un nombre de letras aleatorias
-
-v: monta una carpeta del computador local (o una ruta en red de un directorio) en el contenedor, esto es para que utiice dicha carpeta como si estuviese dentro del contenedor
-
{ruta_full_del_directorio_local} : ruta del directorio en el computador local que va a ser usado desde el contenedor
-
:: Monta la ruta del directorio de la izquierda en el de la derecha
-
/usr/src/ede: ruta en la cual el contenedor va a “ver” o acceder al directorio usado arriba
-
-w /usr/src/ede: Directorio de trabajo (cwd o qwd, current workind dir), el directorio en el cual se abrirá la pseudo terminal creada con -t
-
edemineduc/etl: Nombre de la imagen a utilizar. Recordar que el contenedor se construye (docker build) para crear una imagen que contiene todos los archivos necesarios y que sirve como espacio de almacenamiento virtual, es similar a el archivo de imagen de una máquina virtual. para ver todas las imágenes disponibles en el computador, ejecutar: “docker images”
Normalmente el usuario de un contenedor realmente sólo tiene acceso a la imagen, y lo que se llamaría estrictamente contenedor es la imagen ejecutándose, mientras que el código más el dockerfile (que tiene las instrucciones para crear la imagen) es de acceso exclusivo de los desarrolladores del proyecto en cuestión (la imagen es el producto “compilado”, el contenedor es cuando está ejecutándose, la instanciación).
-
python3 parseCSVtoEDE.py --help: comando a ejecutarse en el contenedor
- python3: ejecuta python3
- parseCSVtoEDE.py: el archivo a ejecutarse, que es el archivo de interfaz para ejecutar todo el proyecto
- –help: muestra la ayuda y los comandos disponibles, que son 4 además de la ayuda por ahora.