# LaTeX Docker Builder Docker-Image und Build-Umgebung zum plattformunabhängigen, reproduzierbaren Kompilieren von LaTeX-Dokumenten (wie der Seminararbeit oder Masterthesis an der Fachhochschule Burgenland). - **Git-Repository:** [https://git.djnizz.at/Nizz05/latex-docker.git](https://git.djnizz.at/Nizz05/latex-docker.git) - **Basis-Image:** `texlive/texlive:latest` (Vollständige TeX Live Distribution inkl. `latexmk`, `biber`, `biblatex`, `koma-script`, `mathpazo`, `tikz` etc.) --- ## Inhaltsverzeichnis - [Voraussetzungen](#voraussetzungen) - [Schnellstart](#schnellstart) - [1. PowerShell (Windows)](#1-powershell-windows) - [2. Bash / Linux / macOS / WSL](#2-bash--linux--macos--wsl) - [3. Docker Compose](#3-docker-compose) - [4. Reines Docker CLI](#4-reines-docker-cli) - [5. Makefile](#5-makefile) - [Image selbst bauen](#image-selbst-bauen) - [Git Remote & Image Registry](#git-remote--image-registry) - [Code ins Git-Repo pushen](#code-ins-git-repo-pushen) - [Image zur Registry pushen (optional)](#image-zur-registry-pushen-optional) - [Beispiel für CI/CD (Gitea Actions / Woodpecker)](#beispiel-f%C3%BCr-cicd-gitea-actions--woodpecker) --- ## Voraussetzungen - [Docker Desktop](https://www.docker.com/products/docker-desktop/) (oder Docker Engine unter Linux) läuft auf Ihrem System. - Keine lokale TeX-Live- oder MiKTeX-Installation auf dem Host erforderlich! --- ## Schnellstart ### 1. PowerShell (Windows) Das mitgelieferte Skript `build-seminar.ps1` vereinfacht alle Abläufe: ```powershell # Seminararbeit kompilieren .\build-seminar.ps1 # Bereinigen (löscht temporäre Dateien im out/-Ordner) .\build-seminar.ps1 -Clean # Kontinuierlicher Watch-Modus (baut bei jeder Dateiänderung neu) .\build-seminar.ps1 -Watch # Anderes Dokument kompilieren .\build-seminar.ps1 -File "meinDokument.tex" ``` ### 2. Bash / Linux / macOS / WSL ```bash # Ausführbar machen chmod +x build-seminar.sh # Kompilieren ./build-seminar.sh # Bereinigen ./build-seminar.sh ../Seminar_Arbeit_BITI_Gruber clean # Watch-Modus ./build-seminar.sh ../Seminar_Arbeit_BITI_Gruber watch ``` ### 3. Docker Compose ```bash # Bauen docker compose run --rm builder # Bereinigen docker compose run --rm clean # Watch-Modus docker compose run --rm watch ``` ### 4. Reines Docker CLI Direkt ohne Hilfsskripte: ```bash # Windows PowerShell: docker run --rm -v "${PWD}/../Seminar_Arbeit_BITI_Gruber:/workspace" -w /workspace latex-docker:latest # Linux / macOS / WSL: docker run --rm -v "$(pwd)/../Seminar_Arbeit_BITI_Gruber:/workspace" -w /workspace latex-docker:latest ``` Beliebige LaTeX-Befehle übergeben: ```bash # Bereinigen docker run --rm -v "${PWD}/../Seminar_Arbeit_BITI_Gruber:/workspace" latex-docker:latest clean # Spezifischen latexmk-Befehl ausführen docker run --rm -v "${PWD}/../Seminar_Arbeit_BITI_Gruber:/workspace" latex-docker:latest latexmk -pdf seminararbeit.tex ``` ### 5. Makefile ```bash make image # Image bauen make build # Seminararbeit kompilieren make clean # Temporäre Dateien löschen make watch # Kontinuierlich bauen make shell # Interaktive Bash-Shell im Container öffnen ``` --- ## Image selbst bauen Das Image lokal bauen und mit Tags versehen: ```bash docker build -t latex-docker:latest -t git.djnizz.at/nizz05/latex-docker:latest . ``` --- ## Git Remote & Image Registry ### Code ins Git-Repo pushen Der Ordner ist bereits mit der Remote-URL `https://git.djnizz.at/Nizz05/latex-docker.git` verknüpft: ```bash git add . git commit -m "feat: Initial commit of latex docker builder environment" git push -u origin main ``` ### Image zur Registry pushen (optional) Falls Ihre Gitea/Forgejo-Instanz die Docker-Container-Registry aktiviert hat: ```bash docker login git.djnizz.at docker push git.djnizz.at/nizz05/latex-docker:latest ``` --- ## Beispiel für CI/CD (Gitea Actions / Woodpecker) ### Gitea / GitHub Actions (`.gitea/workflows/build.yml`) ```yaml name: Build Seminararbeit on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: ubuntu-latest container: image: texlive/texlive:latest steps: - name: Checkout uses: actions/checkout@v4 - name: Compile LaTeX run: | latexmk -pdf seminararbeit.tex - name: Upload PDF Artifact uses: actions/upload-artifact@v4 with: name: seminararbeit-pdf path: out/seminararbeit.pdf ```