Compilación Remota de PreTeXt desde VS Code con Docker en Servidor Windows 11

Compilación Remota de PreTeXt con Docker en Servidor Windows 11

Este documento describe paso a paso cómo compilar un libro PreTeXt en un entorno remoto:

  • Laptop (HIROSHIMA) con VS Code (cliente SSH)
  • Desktop (192.168.0.241) con Docker Desktop (host de compilación)
  • Proyecto compartido por SMB entre ambas máquinas.

🧩 1. Arquitectura general

Laptop (HIROSHIMA)
│
├── VS Code conectado por SSH → Desktop (Windows 11)
│       ├── Docker Desktop
│       ├── Unidad de red: \\HIROSHIMA\Proyectos\Libro_Generico_PreText
│       └── Compila PreTeXt en contenedor
│
└── Archivos editados desde VS Code remoto

⚙️ 2. Montar la carpeta compartida desde la Desktop

En PowerShell de la desktop (como usuario rommel):

net use Z: \\HIROSHIMA\Proyectos\Libro_Generico_PreText /user:rommel aaa

Verifica:

dir Z:\

Si ves tus archivos (project.ptx, source, output), el montaje SMB está correcto.


🧠 3. Acceder a los archivos desde VS Code remoto

Desde tu laptop (VS Code):

  1. Conéctate por Remote SSH a 192.168.0.241

  2. Usa File → Open Folder…

  3. En el cuadro de ruta, escribe directamente:

    \\HIROSHIMA\Proyectos\Libro_Generico_PreText
    

✅ VS Code abrirá los archivos remotamente, aunque vivan en tu laptop.
Ya puedes editar y guardar como si fueran locales.


🐋 4. Verificación de Docker en la Desktop

Abre un terminal en VS Code (sesión SSH) y prueba:

docker version

Si responde con “docker no se reconoce”, significa que la sesión SSH no tiene el PATH de Docker visible.


⚙️ 5. Solución: Docker no reconocido en la sesión SSH

🧠 Causa

El servicio OpenSSH corre como proceso independiente y no carga las variables de entorno ni rutas de tu sesión de escritorio, aunque estés logueado como Hiroshima\rommel.

✅ Soluciones posibles

🅰️ 5.1 Usar Docker dentro de WSL (recomendado)

Docker Desktop usa WSL 2 internamente.
Puedes invocarlo desde tu sesión SSH sin necesidad del ejecutable docker.exe:

wsl -d docker-desktop docker version

Si responde correctamente, puedes compilar PreTeXt así:

wsl -d docker-desktop docker run --rm `
  -v "//HIROSHIMA/Proyectos/Libro_Generico_PreText:/workspace" `
  -w /workspace `
  pretext-curso `
  pretext build web

🔹 Usa barras // en lugar de \\ para rutas UNC dentro de WSL.


🅱️ 5.2 Instalar el cliente Docker CLI nativo

Si prefieres tener el comando docker en Windows (para PowerShell y SSH):

  1. Descarga el CLI estático desde Docker:
    https://download.docker.com/win/static/stable/x86_64/docker-27.1.1.zip
  2. Descomprime en:
    C:\Program Files\DockerCLI
    
  3. Agrega al PATH del sistema:
    setx /M PATH "$($env:PATH);C:\Program Files\DockerCLI"
    
  4. Cierra sesión o reinicia el servicio SSH:
    Restart-Service sshd
    

Ahora el comando docker funcionará también desde tus sesiones SSH.


🔁 6. Verificar Docker desde VS Code remoto

docker ps

Si ves la lista vacía (sin error), el cliente está correctamente enlazado al demonio de Docker Desktop.


🧰 7. Compilar PreTeXt dentro del contenedor

Una vez todo está configurado, el comando principal es:

docker run -it --rm `
  -v "\\HIROSHIMA\Proyectos\Libro_Generico_PreText:/workspace" `
  -w /workspace `
  pretext-curso `
  pretext build web

O si usas WSL:

wsl -d docker-desktop docker run --rm -v "//HIROSHIMA/Proyectos/Libro_Generico_PreText:/workspace" -w /workspace pretext-curso pretext build web

El resultado se guardará en output/web dentro de la carpeta compartida.


🧩 8. Script opcional build-pretext.ps1

Guarda este script en la desktop para automatizar la compilación:

param([string]$target = "web")

$pathUNC = "\\HIROSHIMA\Proyectos\Libro_Generico_PreText"
$image   = "pretext-curso"

Write-Host "Compilando $target desde $pathUNC ..."

# Verificar Docker
try {
    docker version | Out-Null
    $cmd = "docker run --rm -v `"$pathUNC:/workspace`" -w /workspace $image pretext build $target"
} catch {
    Write-Host "Docker no accesible desde Windows, intentando WSL..."
    $cmd = "wsl -d docker-desktop docker run --rm -v `"//$($pathUNC.Replace('\','/')):/workspace`" -w /workspace $image pretext build $target"
}

Invoke-Expression $cmd
Write-Host "✅ Compilación $target finalizada."

Ejecútalo desde PowerShell o VS Code remoto:

.uild-pretext.ps1 web
.uild-pretext.ps1 print
.uild-pretext.ps1 kindle

✅ 9. Resultado

Con esta configuración:

  • VS Code en la laptop puede editar los archivos del libro en tiempo real.
  • Docker Desktop compila desde la desktop.
  • Todo el sistema es accesible y reproducible sin duplicar archivos.

Autor: Rommel Contreras
Última actualización: 11 de octubre de 2025