Creare il Tuo Curriculum Vitae con LaTeX su Linux, Windows, Mac Utilizzando Docker e Docker Compose

Scrivere il proprio curriculum vitae (CV) con LaTeX è un'ottima scelta per ottenere un documento dall'aspetto professionale e curato. Tuttavia, l'installazione e la configurazione di LaTeX possono variare notevolmente a seconda del sistema operativo utilizzato. Con Docker, però, è possibile superare queste difficoltà e creare un ambiente di lavoro portatile e replicabile, indipendentemente dalla piattaforma che utilizzi.

In questo articolo, ti mostrerò come configurare un progetto per creare il tuo CV in LaTeX utilizzando Docker e Docker Compose, garantendo la stessa esperienza di utilizzo su qualsiasi sistema operativo, che sia Linux, macOS o Windows.

Struttura del progetto

Organizza il progetto creando una cartella ad-hoc che conterrà tutte le informazioni necessarie per il funzionamento. Crea una cartella chiamata my_latex_cv, che conterrà tutti i file necessari per generare il CV.

Per fare ciò su ambiente Windows puoi utilizzare il gestore delle cartelle, su terminale puoi creare la cartella con i seguenti comandi:

mkdir my_latex_cv
cd my_latex_cv

All'interno di questa cartella, creeremo tre elementi principali:

  • data/: cartella contenente i file .tex e dove verrà generato il PDF
  • Dockerfile: definisce l'immagine Docker contenente LaTeX
  • docker-compose.yml: file di configurazione per Docker Compose che gestisce il container Docker

La struttura del progetto dovrebbe apparire così:

my_latex_cv/
├── data/
├── Dockerfile
└── docker-compose.yml

Creazione del Dockerfile

Il Dockerfile è essenziale per configurare l'immagine Docker con tutti gli strumenti necessari per compilare un documento LaTeX.

Crea un file Dockerfile nella cartella principale del progetto e aggiungi il seguente contenuto:

FROM debian:stable-slim

# Installazione delle dipendenze e di TeX Live
RUN apt-get update && apt-get install -y \
    texlive-full \
    make \
    ghostscript \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Cartella di lavoro
WORKDIR /data

# Comando di default per compilare i file tex
ENTRYPOINT ["pdflatex"]

Questo Dockerfile crea un'immagine basata su Debian con TeX Live completo, necessario per compilare qualsiasi documento LaTeX. L'immagine sarà configurata per lavorare direttamente nella cartella /data.

Configurazione di Docker Compose

Docker Compose ti permette di definire e gestire servizi Docker in modo semplice e coerente. Crea un file docker-compose.yml nella cartella principale del progetto e inserisci il seguente contenuto:

services:
  latex:
    build: .
    volumes:
      - ./data:/data
    working_dir: /data

Questo file definisce un singolo servizio chiamato latex, basato sull'immagine Docker costruita con il Dockerfile. La cartella data viene montata nel container, permettendo di leggere e scrivere file all'interno di essa.

Creazione del file LaTeX del CV

Ora è il momento di creare il tuo CV in LaTeX. Crea un file chiamato mio_cv.tex nella cartella data. Puoi usare il seguente template LaTeX:

\documentclass[11pt,a4paper,sans]{moderncv}

% Temi per moderncv
\moderncvstyle{classic}   % Stile del CV (classic, banking, casual, oldstyle, fancy)
\moderncvcolor{blue}      % Colore del CV (blue, orange, green, red, purple, grey, black)
\usepackage[utf8]{inputenc}
\usepackage[scale=0.85]{geometry}

% Informazioni personali
\name{Scrivo}{Codice}
\title{Curriculum Vitae} 
\address{Via Roma, 1}{00100 Roma, Italia}
\phone[mobile]{+39~123~456~7890}
\email{info@scrivocodice.it}
\homepage{https://scrivocodice.it} % Home page personale (opzionale)
\social[linkedin]{scrivo-codice-640796220} % LinkedIn (opzionale)

\photo[64pt][0.4pt]{scrivo.png} % Foto (opzionale)

\begin{document}

\makecvtitle

\section{Esperienza Professionale}
\cventry{2020--Presente}{Sviluppatore Software}{XYZ S.r.l.}{Roma}{}{
\begin{itemize}
\item Sviluppo di applicazioni web utilizzando tecnologie moderne come Django, Vue.js, Node.js.
\item Collaborazione con team cross-funzionali per progettare e implementare nuove funzionalità.
\item Gestione del ciclo di vita completo dello sviluppo software.
\end{itemize}}

\cventry{2017--2020}{Junior Developer}{ABC S.p.A.}{Milano}{}{
\begin{itemize}
\item Sviluppo e manutenzione di applicazioni interne in Java.
\item Ottimizzazione delle prestazioni di database e query SQL.
\item Supporto tecnico agli utenti aziendali.
\end{itemize}}


\section{Istruzione}
\cventry{2015--2017}{Laurea Specialistica in Ingegneria Informatica}{Università degli Studi di Roma}{Roma}{}{
\begin{itemize}
\item Tesi: "Analisi delle Prestazioni di Algoritmi di Machine Learning"
\item Voto: 110/110 cum laude
\end{itemize}}

\cventry{2012--2015}{Laurea Triennale in Informatica}{Università degli Studi di Roma}{Roma}{}{
\begin{itemize}
\item Tesi: "Sistemi di Raccomandazione: Un Approccio Basato su Filtraggio Collaborativo"
\item Voto: 110/110
\end{itemize}}

\section{Competenze}
\cvitem{Programmazione}{Python, Java, C++, JavaScript, SQL}
\cvitem{Strumenti}{Git, Docker, Kubernetes, Jenkins, LaTeX}
\cvitem{Linguaggi}{Italiano (madrelingua), Inglese (fluente)}

\section{Progetti Personali}
\cvitem{Progetto 1}{\textbf{Nome del Progetto} - Breve descrizione del progetto e delle tecnologie utilizzate.}
\cvitem{Progetto 2}{\textbf{Nome del Progetto} - Breve descrizione del progetto e delle tecnologie utilizzate.}

\section{Interessi}
\cvitem{Tecnologia}{Machine Learning, Cloud Computing, Sviluppo Web}
\cvitem{Sport}{Ciclismo, Escursionismo}
\cvitem{Altro}{Fotografia, Lettura, Viaggi}

\end{document}

Questo template è un esempio di CV con uno stile pulito e moderno, realizzato con il pacchetto moderncv.

Compilazione del CV con Docker Compose

Ora che tutto è pronto, possiamo procedere con la compilazione del CV. Esegui i seguenti comandi dalla cartella principale del progetto.

In primo luogo, costruiamo l'immagine Docker basata sul Dockerfile.

docker-compose build

Successivamente, passiamo a compilare il documento LaTeX:

docker-compose run latex mio_cv.tex

Questo comando esegue pdflatex all'interno del container, compilando il file mio_cv.tex. Il PDF risultante verrà salvato nella cartella data.

Poiché nel Dockerfile pdflatex è stato inserito come ENTRYPOINT, abbiamo configurato il container Docker in modo che esegua automaticamente pdflatex ogni volta che viene avviato il container. Questo significa che puoi passare qualsiasi file .tex come argomento al comando Docker, e il container lo compilerà.

Ad esempio, se hai più file .tex nella cartella data, puoi compilare ciascuno di essi semplicemente specificando il nome del file al comando docker-compose run. Ecco un esempio di come puoi farlo:

docker-compose run latex primo_documento.tex
docker-compose run latex secondo_documento.tex

In questo modo, il container può essere utilizzato per compilare qualsiasi file .tex presente nella cartella data, senza dover modificare ulteriormente il Dockerfile o il file docker-compose.yml.

Verifica del risultato

Al termine della compilazione, dovresti trovare il file mio_cv.pdf nella cartella data. Apri questo file per verificare che tutto sia stato generato correttamente.

Conclusioni

Utilizzare Docker e Docker Compose per gestire la compilazione dei documenti LaTeX offre numerosi vantaggi: isolamento dell'ambiente, facilità di gestione e riproducibilità. Con questa configurazione, puoi creare un CV professionale in LaTeX su qualsiasi piattaforma, che sia Linux, macOS o Windows, senza dover configurare manualmente LaTeX sul tuo sistema operativo. Con pochi comandi, puoi generare il tuo CV ogni volta che lo aggiorni, senza preoccuparti delle dipendenze o delle configurazioni di sistema.