Qué es una imagen Docker

Una imagen Docker es una plantilla o esquema a partir del cual podemos generar un contenedor Docker, es decir, podemos generar un entorno aislado que está diseñado para ejecutar una o más apliaciones de forma óptima. La imágenes se crean a partir de un archivo, al que se denomina Dockerfile, usando el comando docker build. Una vez que has generado tu imagen puedes almacenarla en repositorio de imágenes Docker. En Docker Hub, por ejemplo, puedes almacenar tus imágenes de manera privada o pública. Si visitas Docker Hub verás que puedes usar muchísimas imágenes de forma gratuita sin tener que crear tus propias imágenes. Muchas de estas imágenes son oficiales, desarrolladas y distribuidas por equipos desarrolladores de una tecnología específica. Desde bases de datos a herramientas DevOps, pasando por servicios de mensajería e, incluso, sistemas operativos, tienen una imagen preparada para ser descargada y usada en Docker Hub. Puedes disponer rápidamente de una instancia de Jenkins descargando su imagen oficial…

La clase Expando de Groovy

¿Te imaginas una clase de Groovy a la que le puedes añadir, en tiempo de ejecución, propiedades y métodos? Pues eso es lo que te ofrece su clase Expando, cuyo uso es muy similar al modo en el que, en JavaScript, se usan objetos instanciando la variable Object.

// Define la classe Expando con dos propiedades:
def blog = new Expando(titulo : "metroSetenta", subtitulo : "Arquitectura y diseño de software")
// Añade una nueva propiedad a Expando:
blog.url="metrosetenta.es"
// Incluye un método con un cierre:
blog.toString={
  return """
    Título del blog:    ${titulo}
    Subtítulo del blog: ${subtitulo}
    URL del blog:       ${url}
  """
}
println (blog)

Observa en el pequeño ejemplo de arriba que el constructor usa una notación similar a los mapas Groovy y, que los métodos, son implementados usando cierres (closures). Puedes probar este pequeño ejemplo guardándolo en un archivo para ejecutarlo con el comando groovy.

Patrones creacionales

Los patrones de diseño creacionales son aquellos que nos proponen soluciones para problemas relacionados con la instanciación de objetos. Automatizar el proceso de construcción de un objeto complejo, limitar la instaciación de una clase a un único objeto al que se pueda acceder de manera global o usar un objeto como prototipo para crear otros objetos similares son algunos de los usos de los patrones de diseño creacionales.

  • Factory Method (Método de fabricación): Si necesitamos un objeto de un tipo, pero desconocemos cual es el objeto concreto que vamos a necesitar en el momento del diseño, este es nuestro patrón. Donde dije tipo puedes poner, por ejemplo, conexión a base de datos, y puedes sustituir objeto concreto por conexión a Oracle Database, conexión a MySQL, conexión a PostgreSQL…

Monitorizar peticiones en Redmine

En ocasiones necesitas conocer la evolución de una petición o tarea en Redmine, en la que no estás involucrado, mediante notificaciones por correo electrónico. Es posible hacerlo porque Redmine te facilita la posibilidad de monitorizar peticiones o tareas. Para ello, dirígete a la petición a la que deseas hacer seguimiento y, en la parte inferior, al final del cuerpo de la petición, pulsa en el enlace Monitorizar que se encuentra junto al icono de la estrella.