1. Introducción
Hola a todos, seguro que muchos diréis que ya existía una entrada previa que contaba cómo instar una versión de Redmine en una máquina virtual y conectarla con Subversion.
Pero aprovechando la tendencia de los contenedores y las ventajas que nos dan, voy a enseñaros cómo montar rápidamente una instalación del software de gestión Redmine con una versión actualizada, usando para ello la interfaz gráfica Kitematic para la gestión del contenedor Docker correspondiente.
Es importante recordar que aunque Redmine es GPL, no sucede lo mismo con su plugin, que sí es de pago, aunque podemos usar una versión reducida Light, que sí es gratuita. En cualquier caso, esta versión es muy limitada y para trabajar medianamente bien necesitaremos pasar por caja para adquirir la versión PRO con un coste de 399$. Eso sí, podemos usar su Trial de 30 Días.
2. Entorno
Para realizar la instalación y el tutorial he utilizado:
Hardware: MacBook Pro 15″ 2018 – 2,2GHz i7 – 32GB (macOS Mojave 10.14.4)
Software:
- Docker Desktop for Mac 17.12
- Kitematic + Docker Toolbox
- Imagen oficial Redmine 4.0.4
- Redmine Agile Plugin 1.4.12-light
- Google Chrome Version 74.0.3729.131 (Official Build) (64-bit)
3. Instalación
3.1 Registrarnos en DockerHub
En primer lugar nos registramos (gratis) en DockerHub, para ello accedemos a https://hub.docker.com/signup y seguimos los pasos del registro.
3.2 Descargar Docker Desktop
Una vez registrados accedemos a https://hub.docker.com/ y seleccionamos la opción Get started with Docker Desktop que nos llevará al menú de descarga.
Entre las opciones de descarga tenemos Windows y Mac, por defecto nos ofrecerá la que se corresponda con nuestro sistema operativo. Pulsamos Download Docker Desktop for Mac para comenzar la descarga.
Una vez descargado el archivo Docker.dmg vamos a la carpeta Descargas de nuestro mac y lo ejecutamos haciendo doble clic. Seguimos el proceso de instalación y acabamos añadiendo Docker a las aplicaciones.
Cuando intentemos ejecutarlo por primera vez, el sistema operativo nos pedirá por seguridad que confirmemos que queremos abrirlo al tratarse de una descarga de internet, confirmamos pulsando Open o Abrir (depende del idioma que tengáis configurado).
3.3 Instalar Kitematic
Una vez arrancado Docker desktop nos aparecerá un icono en la barra superior. Para instalar la interfaz gráfica, sacamos el menú secundario y seleccionamos la opción Kitematic.
Esto lanzará la instalación, una vez instalada, seguimos de nuevo estos pasos para arrancar la interfaz.
Una vez finalizada la instalación nos aparecerá la interfaz gráfica.
Para poder utilizarla debemos conectarnos a Docker Hub desde donde podremos descargar las imágenes de los Docker que queremos utilizar, en nuestro caso el de Redmine.
3.4 Obtener la imagen de Redmine
Una vez logados en Docker Hub buscamos la imagen de Redmine a través del cuadro de búsqueda. os aparecerán los resultados, y entre ellos cabe destacar dos, redmine official, que es la imagen que vamos a usar para este tutorial y redmine bitnami, que os la recomiendo al final del tutorial para empezar a curiosear más allá.
Pulsamos el botón CREATE de la imagen redmine official y veremos cómo empieza a descargarse y arranca de Docker.
Una vez arrancado el Docker, en la parte superior aparecerá la etiqueta verde RUNNING. Podemos comprobar que está funcionando nuestro Redmine accediendo a la interfaz web a través de la opción WEB PREVIEW en la parte derecha de la interfaz, en el icono que es un cuadrado con una flecha, justo al lado de los ajustes.
Nos aparecerá la pantalla principal de Redmine para que empecemos a configurarlo. Podemos entrar con admin/admin.
3.5 Descargar el plugin Agile
Antes incluso de empezar a configurar nada, vamos a instalar el plugin que nos permitirá usar redmine en modo ágil. Accedemos a https://www.redmineup.com/pages/plugins/agile y pulsamos Download now
Entre las opciones seleccionamos Light (Free), nos aparecerá un popup para introducir nuestro email y que nos llegue el enlace de descarga.
Esta versión nos ofrecerá la funcionalidad mínima, los Agile boards y la Burn Down Chart.
3.6 Instalar el plugin Agile
Una vez descargado el archivo redmine_agile.zip vamos a la carpeta de descargas y descomprimimos el fichero por el método que prefiráis, en mi caso doble clic en el .zip desde la interfaz gráfica. Se nos creará un directorio redmine_agile que tendremos que mover a la carpeta de plugins de nuestro contenedor.
Para ello vamos a necesitar abrir nuestro Terminal y movernos a la carpeta de descargas, habitualmente: /Users/vuestrousuario/Downloads
Usaremos el comando docker cp. para poder copiar la carpeta a nuestro contenedor:
docker cp redmine_agile redmine:usr/src/redmine/plugins/
Podemos comprobar que la instalación ha sido correcta arrancando Redmine y comprobando que está activa la opción de configuración Agile en el menú de Administración.
También podemos verificar que se ha copiado arrancando el terminar de nuestro Docker a través de Kitematic. Al arrancar el Docker en la parte superior aparecerá un nuevo botón EXEC, lo pulsamos y nos lanzará el terminal con el que trabajar directamente en el Docker.
NOTA: Alguna instalación de Kitematic esto nos lleva al terminal local y no al del Docker. Para lanzar manualmente el del docker correspondiente ejecutamos docker exec -it mnombredeldocker sh lo que abrirá el terminal con el que operar sobre nuestro contenedor. En nuestro caso será docker exec -it redmine sh.
Gracias a mi compañera Anaís por este aporte, ya que probando el tutorial ha encontrado esta excepción.
Una vez en nuestro contenedor. Navegamos a la ruta /usr/src/redmine , accedemos al directorio de plugins con cd plugins y listamos con ls para comprobar que se ha copiado el plugin.
Ahora vamos al directorio raíz de Redmine (será aquel que contenga el archivo config.ru), en mi caso /usr/src/redmine Y desde este directorio instalamos sus dependencias. Ejecutamos:
bundle install --without development test
En caso de que os falle la ejecución del comando, podéis instalar Bundler antes que es el responsable de gestionar las dependencias, lo hacemos con:
gem install bundler
A continuación migramos las tablas del plugin con el comando:
bundle exec rake redmine:plugins NAME=redmine_agile RAILS_ENV=production
Y por último reiniciamos la aplicacióin de Redmine con: touch tmp/restart.tx
touch tmp/restart.tx
3.7 Configurar el almacenamiento de archivos adjuntos
Para que tengamos persistencia de los ficheros que subimos a nuestro Redmine, tenemos que configurar un volumen local en nuestra máquina de forma, que al «tirar abajo» nuestro contenedor no se borren.
Para ello en Kitematic, en la parte superior derecha vamos a la pestaña Settings y la opción Volumes. Veremos que por defecto la imagen está configurada para persistir el directorio /usr/src/redmine/files que es el lugar donde se almacenarán los ficheros que subamos a nuestro redmine.
Lo que haremos será mapear un directorio local de la máquina física en la que esté corriendo el docker para que los cambios se mantengan. Pulsamos el botón CHANGE, y añadimos la ruta del directorio local, en mi caso, dentro del usuario …/Documents/docker_redmine
Y con esto ya estamos preparados para empezar a usar nuestro Redmine.
Para probar que funciona correctamente podemos simplemente ir Redmine, abrir la wiki ya cargar un archivo.
OJO!! Durante la elaboración del tutorial han cambiado las versiones tanto de Redmine (4.0.3 a la 4.0.4) como del plugin (1.4.10 a 1.4.12), lo que ha provocado que se desalinearan las versiones originales con las que empecé el tutorial. La versión 1.4.10 del plugin no es compatible con la 4.0.4 de Redmine. Yo tenía el plugin en local y estaba lanzando un docker con la nueva versión de redmine de Dockerhub, lo que hacía que fallasen las dependencias y me devolviese constantemente un error rake aborted! Os recomiendo siempre que comprobéis las versiones.
Si tenéis algún problema durante la instalación, os recomiendo echar un vistazo a esta página de la documentación oficial donde aparecen los errores más comunes.
4. Conclusiones
Esto solo es el principio, solo está pensado para familiarizarse un poco con Docker a través de la herramienta visual Kitematic y poder hacer algunas pruebas con la herramienta sin tener que realizar una configuración pesada.
Para poder usar Kitematic sobre Docker de una forma intensiva, es necesario pensar en montar una base de datos externa más allá del SQLite que trae embebido Redmine. Esto podemos hacerlo también en otro Docker y orquestarlo.
Si queréis probar esta configuración con una base de datos externa, os recomiendo utilizar como imagen de referencia la de Bitnami en lugar de esta que hemos usado aquí.