🐳 PreTeXt en Docker: Construcción y Ejecución
Este documento resume cómo construir una imagen Docker con PreTeXt, ejecutar un contenedor, y servir un libro en formato web.
El objetivo es que cualquier escritor o creador pueda trabajar en su proyecto sin complicaciones técnicas.
🐋 1. Construcción de la imagen Docker
Para generar una imagen de PreTeXt, cree un archivo llamado Dockerfile con este contenido:
# Imagen base con Python 3.11
FROM python:3.11-slim
# Instalar dependencias del sistema necesarias
RUN apt-get update && apt-get install -y \
git \
make \
texlive-full \
latexmk \
&& rm -rf /var/lib/apt/lists/*
# Instalar PreTeXt CLI
RUN pip install --no-cache-dir pretext
# Crear usuario de trabajo
WORKDIR /workspace
# Montar volúmenes al iniciar
VOLUME ["/workspace"]
# Comando por defecto
CMD ["bash"]
Ahora, en la terminal construye la imagen:
docker build -t pretext-completo .
👉 Esto creará una imagen agigantada de 10.8 GB llamada pretext-completo.
📝 Dockerfile usado para el curso:
# ==============================
# Dockerfile (Optimizado)
# PreTeXt con soporte LaTeX/PDF
# ==============================
# Imagen base oficial de Python
FROM python:3.12-slim
# Definir versión de PreTeXt como variable
ENV PTX_VERSION=2.29.2
# Instalar dependencias necesarias en una sola capa
RUN apt-get update && apt-get install -y \
make git wget curl unzip \
texlive-latex-base \
texlive-fonts-recommended \
texlive-latex-extra \
texlive-xetex \
texlive-lang-spanish \
nodejs \
npm \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Instalar PreTeXt y actualizar assets globales
RUN pip install --no-cache-dir --upgrade pip \
&& pip install --no-cache-dir pretext==${PTX_VERSION} \
&& pretext update --force || true
# Instala el castellano para las palabras claves de PreTeXt desde el repositorio del autor en GitHub
RUN mkdir -p /root/.ptx/${PTX_VERSION}/core/xsl/localizations/ \
&& curl -fsSL \
"https://raw.githubusercontent.com/rommeljose/Libro_Generico_PreText/\
main/otros_necesarios/es-ES.xml" \
-o /root/.ptx/${PTX_VERSION}/core/xsl/localizations/es-ES.xml
# Directorio de trabajo
WORKDIR /workspace
# Comando por defecto
CMD ["/bin/bash"]
Nota: La imagen se construye con:
docker build --no-cache -t pretext-curso -f Dockerfile.curso .
👉 Esto creará una imagen disminuida de 3,5 GB llamada pretext-curso.
📚 2. Crear un proyecto de prueba en PreTeXt
Ejecuta un contenedor interactivo:
docker run -it -v ${PWD}:/workspace pretext-es-web bash
Dentro del contenedor:
# Crear un nuevo proyecto de prueba
pretext new book new-pretext-project
cd new-pretext-project
Construir el libro en formato web:
pretext build web
Los archivos generados quedarán en:
/workspace/new-pretext-project/output/web
🌐 3. Servir el proyecto
🔹 Opción A: Usando PreTeXt directamente
Dentro del contenedor:
pretext view web -a public -p 8080 --no-launch
Esto intentará levantar el servidor en el puerto 8080.
Si no funciona correctamente (según la versión de PreTeXt), pasa a la opción B.
🔹 Opción B: Usando Python (recomendado)
Entra al directorio del libro web:
cd /workspace/new-pretext-project/output/web
Ejecuta el servidor manualmente:
python3 -m http.server 8080 --bind 0.0.0.0
🔀 4. Mapear puertos correctamente
Cuando ejecutes el contenedor, asegúrate de mapear el puerto del host al puerto del contenedor:
docker run -it -p 8080:8080 -v ${PWD}:/workspace pretext-es-web bash
- El primer 8080 = puerto en tu PC (host).
- El segundo 8080 = puerto dentro del contenedor.
✅ 5. Probar en el navegador
Ahora abre en tu navegador:
Deberías ver tu libro generado con PreTeXt en formato web. 🎉
🔧 6. Ejemplo alternativo de puertos
Si el 8080 ya está en uso, puedes cambiarlo:
docker run -it -p 8888:8080 -v ${PWD}:/workspace pretext-es-web bash
Y acceder en:
📝 Notas finales
- Build:
pretext build webgenera el libro. - Serve:
python3 -m http.serverlevanta el servidor. - Deploy:
pretext deploypermite subir a GitHub Pages. - Todo esto funciona igual en Windows, Linux o Mac gracias a Docker.
Ver autoría:
✍️ Autor: Rommel Contreras
📅 Septiembre 2025
