.png)
La idea más votada en el InterSystems Ideas Portal —con 74 votos— pide una versión ligera de IRIS. Aunque la plataforma ha crecido hasta convertirse en un potente motor de datos, muchos proyectos solo necesitan sus capacidades de base de datos SQL. Este artículo muestra cómo crear una imagen no oficial y compacta de IRIS Community Edition centrada únicamente en la funcionalidad básica de base de datos, reduciendo el tamaño de la imagen en más de un 80%.
⚠️ Aviso
Este proyecto genera una imagen no oficial y experimental de InterSystems IRIS Community Edition.
- No está soportada ni avalada por InterSystems.
- Usadla bajo vuestra propia responsabilidad. Las modificaciones eliminan funciones esenciales de la plataforma y pueden romper la compatibilidad con herramientas, APIs y comportamientos esperados.
- No se aplican garantías de ningún tipo, incluida su idoneidad para uso en producción.
- Está pensada solo para fines educativos y experimentales por parte de usuarios avanzados.
¿Por qué un IRIS ligero?
Aunque IRIS incluye hoy funciones muy completas —interoperabilidad, analítica, machine learning, gestión del sistema, etc.— muchos proyectos solo requieren sus capacidades SQL básicas. La imagen oficial Docker de Community Edition ocupa aproximadamente:
- Uso en disco: 3,5–3,8 GB
- Tamaño comprimido: ~1,1 GB
IRIS Light reduce eso a:
- Uso en disco: ~575–583 MB
- Tamaño comprimido: ~144–148 MB
Esto lo hace adecuado para:
- Uso SQL en microservicios o contenedores
- Pipelines de CI con arranque y descarga más rápidos
- Escalado horizontal donde no se necesitan todas las funcionalidades
Comparación de huella de imagen
Las imágenes oficiales de IRIS Community Edition suelen ocupar entre 3.5 y 3.8 GB en disco, con tamaños comprimidos de alrededor de 1.1 GB
$ docker images containers.intersystems.com/intersystems/iris-community IMAGE ID DISK USAGE CONTENT SIZE containers.intersystems.com/intersystems/iris-community:latest-cd 14c6314edcc5 3.8GB 1.17GB containers.intersystems.com/intersystems/iris-community:latest-em 4c25627895eb 3.52GB 1.01GB containers.intersystems.com/intersystems/iris-community:latest-preview 424e87dbb7d8 3.81GB 1.17GB
Por el contrario, la imagen simplificada “IRIS Light” creada mediante este enfoque es aproximadamente 8 veces más pequeña en tamaño comprimido
$ docker images caretdev/iris-community-light IMAGE ID DISK USAGE CONTENT SIZE caretdev/iris-community-light:latest-cd ce5c2d7fa173 583MB 148MB caretdev/iris-community-light:latest-em fd33a51a0e81 575MB 144MB caretdev/iris-community-light:latest-preview f10c714117da 583MB 148MB
Analizando las capas de la imagen con Dive
Para comprender y optimizar la imagen de IRIS Community Edition, usamos dive, una herramienta para inspeccionar capas de imágenes Docker e identificar ineficiencias.
Antes de la optimización: imagen estándar de IRIS Community
La captura de pantalla de abajo muestra el análisis de la imagen oficial iris-community:latest-em. Una de las capas más grandes pesa 882 MB e incluye Java, bibliotecas del sistema y otros componentes de ejecución que no son estrictamente necesarios para cargas de trabajo solo de SQL
.png)
Y la más grande, de 1.5 GB, que contiene principalmente IRIS itself
.png)
Después de la optimización: imagen IRIS Light
Al eliminar paquetes innecesarios y compactar el almacenamiento interno de IRIS, la imagen final cabe en una sola capa de 320 MB, logrando una reducción de tamaño drástica
.png)
Cómo se construye la imagen IRIS Light
El proceso sigue un Dockerfile de múltiples etapas, comenzando desde la base estándar iris-community:latest-em. Los pasos clave incluyen:
1. Desactivar componentes en la configuración
- Desactivar WebServer, System Management Portal y Ensemble en
iris.cpf.
2. Eliminar paquetes no usados dentro de IRIS
Usando ObjectScript dentro de una sesión IRIS:
- Borrar paquetes:
%SYS.ML,DeepSee,Interop,OAuth2,Net,Report, y más. - Conservar solo las bibliotecas esenciales del sistema (por ejemplo,
%Library,%SQL,%SYSTEM).
3. Sustituir clases
Algunas clases necesarias (por ejemplo, para el arranque) se sustituyen por implementaciones mínimas sin funcionalidad cuando es necesario.
4. Limpiar bases de datos
Compactar y desfragmentar las bases de datos clave para reducir el tamaño.
5. Limpieza del sistema de archivos
Eliminar:
- Herramientas de desarrollo
- Pila web y CSP
- Bibliotecas de interoperabilidad
- Soporte de Python/Java
- Datos de localización, registros, archivos temporales, controladores ODBC/JDBC
6. Copiar el contenido limpiado a una base Ubuntu nueva
La imagen final se construye sobre ubuntu:24.04, incluye solo los archivos y herramientas necesarios y usa tini como PID 1.
Resultado
La imagen resultante tiene aproximadamente:
- Tamaño comprimido: ~144–148 MB
- Uso de disco sin comprimir: ~570–580 MB
- Funcionalidad SQL: verificada usando la suite de pruebas sqlalchemy-iris (619 aprobadas, 912 omitidas, 0 fallos)
Esto la hace muy adecuada para:
- Servicios SQL mínimos
- Contenedores ligeros de desarrollo/pruebas
- Escenarios de despliegue embebidos o en el edge
- Arquitecturas sin estado y escaladas horizontalmente
Limitaciones importantes
- Sin Management Portal ni servicios web
Toda la pila CSP/web está eliminada. - Sin Interoperabilidad, DeepSee, iKnow o Machine Learning
Estos subsistemas se eliminan explícitamente - Sin soporte interno ni externo
InterSystems no ofrece garantías para esta imagen. La compatibilidad y el comportamiento de actualización son indefinidos. - Las futuras versiones de IRIS pueden cambiar los requisitos de arranque
Dependencias internas en paquetes o archivos eliminados pueden impedir que futuras versiones funcionen con este enfoque
Conclusión
IRIS Light es una imagen Docker simplificada y creada por la comunidad para InterSystems IRIS, que ofrece reducciones significativas en tamaño y complejidad para casos de uso centrados en bases de datos. Aunque no está oficialmente soportada, proporciona una base para experimentación, creación rápida de prototipos y situaciones donde no se necesitan todas las capacidades de IRIS.
Se anima a los usuarios a revisar el Dockerfile, adaptarlo a sus propias necesidades y comprender las implicaciones de eliminar funciones clave de la plataforma.
Se anima a los usuarios a personalizar aún más el Dockerfile para ajustarlo a sus propias necesidades operativas y de seguridad. Todo el proceso de construcción es transparente y reproducible usando únicamente imágenes base públicas de Docker.
Este proyecto está disponible aquí
Imágenes Docker de IRIS Community Light disponibles en Docker Hub
.png)
.png)
Pulsamos el botón "Create" y listo... ya podemos utilizar nuestro agente IA.png)
.png)
.png)






Vamos fazer uma alteração na definição da classe


Ao ser exportado, o global pode ser codificado usando diversas variantes das mais comuns.