Estoy empezando a hacer mis pinitos con Dropwizard, y quiero hacer un pequeño libro/manual de apuntes con todos los elementos propios y ajenos que estoy utilizando y que creo que pueden hacer hacer de Dropwizard algo poderoso.

Para ello, había pensado utilizar Asciidoctor. Es algo que nos dio bastantes buenos resultados a la hora de hacer los apuntes del curso de Experto Java de la Universidad de Alicante.

Peeeeero, no quiero enmarranar mi máquina con herramientas que luego ocupan espacio y no te acuerdas de eliminar. Además, últimamente trabajo por igual tanto en el portátil como en el ordenador de escritorio, y no tengo ganas de tanto setup. Así que creo que estamos en un escenario perfecto para ponernos a dockerizar.

Ya sé que hay al menos 20 imágenes en Docker Hub que hacen precisamente esto, pero me apetecía hacerlo yo, que para eso los ingenieros cuando queremos nos creemos el Llanero Solitario, ¿no?

¿Y qué es lo que quiero?

Generar un proyecto en asciidoctor que genere outputs en HTML, PDF y EPUB.

El fichero Dockerfile es bastante sencillo:

Básicamente lo único que hace es instalar todas las dependencias necesarias para que se genere el proyecto que quiero llevar a cabo. El ejecutable de kindlegen (necesario para generar libros para Amazon Kindle) tenía un poco de truco y había que exponerlo como variable de entorno.

¿Cómo lo pruebo?

Puedo crearme un proyecto en asciidoctor, o hacerme con una plantilla hecha para probar. De momento optaremos por esto último:

Ahora, simplemente lanzamos los siguientes comandos para realizar las conversiones:

Versión HTML:

Versión PDF:

Versión EPUB:

Versión Kindle:

Me gusta mucho partir de una imagen de Alpine, ya que pesa sólo 4 megas. Consigues una herramienta muchísimo más ligera que con Ubuntu o Fedora, que parten con ciento y pico megas de más.

Como curiosidad

Inicialmente hice una imagen de asciidoc donde puse pygments como configuración por defecto, pero no conseguí que funcionara. Lo pego aquí como curiosidad:

Bueno, pues ahí tenemos la imagen número 21 en Docker Hub 😉

Anuncios