¡Hola desarrolladores! Gracias a todos los que habéis empezado el desarrollo con InterSystems IRIS desde la [plantilla de desarrollo básico](https://openexchange.intersystems.com/package/intersystems-iris-dev-template)! Recientemente, gracias a las contribuciones de [@Dmitry.Maslennikov](https://community.intersystems.com/user/dmitry-maslennikov-5), he actualizado el [Dockerfile](https://github.com/intersystems-community/intersystems-iris-dev-template/blob/master/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: ![](/sites/default/files/inline/images/images/screenshot_2022-05-05_at_00_04_01.png) Vamos a repasar los cambios: 1. Las líneas 11-15 han sido sustituidas por una [única línea 7](https://github.com/intersystems-community/intersystems-iris-dev-template/blob/26123b550ba9ea255d1fed617a25b7bfb6f1900f/Dockerfile#L7), 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](https://github.com/intersystems-community/intersystems-iris-dev-template/blob/26123b550ba9ea255d1fed617a25b7bfb6f1900f/iris.script#L11) 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: ![](/sites/default/files/inline/images/images/telegram-cloud-photo-size-4-6023992706008725779-y.jpg) 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](https://github.com/intersystems-community/intersystems-iris-dev-template/blob/26123b550ba9ea255d1fed617a25b7bfb6f1900f/Dockerfile#L14):
([ $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](https://github.com/caretdev/globals-tool) si no puedes esperar :D Espero que os haya gustado. Y cualquier comentario, duda o _pull request_ es bienvenido. Happy coding!