Artículo
Alberto Fuentes · Mayo 31 Lectura de 2 min

Actualización de la plantilla Dockerfile estándar para desarrollo con InterSystems IRIS

¡Hola desarrolladores!

Gracias a todos los que habéis empezado el desarrollo con InterSystems IRIS desde la plantilla de desarrollo básico!

Recientemente, gracias a las contribuciones de @Dmitry Maslennikov, he actualizado el Dockerfile para hacer el desarrollo más sencillo, las imágenes más ligeras y el proceso de construcción más rápido. Y también parece más bonito ;)

Esto es lo que ha cambiado:

Vamos a repasar los cambios:

1. Las líneas 11-15 han sido sustituidas por una única línea 7, que define el WORKDIR. 

WORKDIR /home/irisowner/irisbuild

De hecho, si WORKDIR señala a una carpeta de inicio del usuario que ejecuta iris, no hace falta realizar ajustes de seguridad.

Por supuesto, debería cambiar la línea en iris.script para cargar el módulo zpm desde otra carpeta workdir

2. Las líneas 17-21 eran comandos COPY que yo solía usar para copiar diferentes archivos desde la carpeta origen del repo a una imagen para usarla para iris en el entorno.

Ahora todas esas líneas han sido sustituidas por una línea

RUN --mount=type=bind,src=.,dst=. \

Esta sintaxis usa la funcionalidad buildkit de Docker que permite montar los archivos que necesitas en la imagen, sin copiarlos realmente. Esto ahorra espacio y acelera el proceso de construcción de la imagen.

Así que con todo esto puedes olvidarte de los comandos COPY: todo lo de la carpeta repo se montará y estará disponible en un WORKDIR durante la fase de construcción. Bonito, ¿eh? Asegúrate de tener esta opción habilitada en tu Docker:

3. Lo que se ha añadido es la línea con parámetro TEST:

ARG TESTS=0

Si TESTS=1 hace que Dockerfile llame test unitarios para el módulo ZPM que desarrollas en el proyecto. Esto se controla con la siguiente línea:

([ $TESTS -eq 0 ] || iris session iris "##class(%ZPM.PackageManager).Shell(\"test $MODULE -v -only\",1,1)") && \

Este parámetro TESTS también ayuda a realizar test unitarios automáticamente durante el CI. Esto merece un tema de discusión adicional y continuaré con ello en el próximo artículo. 

O puedes mirarlo en el código de Dmitry si no puedes esperar :D

Espero que os haya gustado. Y cualquier comentario, duda o pull request es bienvenido.

Happy coding! 

1
0 31
Debate (0)2
Inicie sesión o regístrese para continuar