\section{Requisiti}

L'applicazione è stata sviluppata, eseguita e testata su sistemi UNIX Like, in particolare sulla distribuzione GNU/Linux Debian.\newline
Per questo questo motivo le istruzioni che seguono saranno incentrate su questo ambiente, ma dovrebbero valere per tutti gli altri sistemi.\newline
Per rendere la propria macchina pronta ad eseguire l'applicazione è necessario installare i pacchetti \code{openjdk} (la versione 8 è sufficiente) ed \code{mvn}; in caso di Debian o derivate si usa il seguente comando:
\newline
\begin{lstlisting}[style=BashInputStyle]
    $ sudo apt-get install openjdk-8-jdk mvn
\end{lstlisting}

In caso si volesse usare Docker allora le dipendenze sono docker-compose, ed ovviamente docker stesso. Compose è presente nella maggior parte delle repo delle distro, il problema è che non è sempre aggiornato, per cui si ovvierà a questo possibile problema per mezzo di pip.\newline
La serie di comandi è la seguente, in caso di distro diversa da Debian usare il relativo gestore di pacchetti in sostituzione ad apt:
\newline
\begin{lstlisting}[style=BashInputStyle]
    $ sudo apt-get install docker-ce python3-pip
    $ sudo pip3 install docker-compose
\end{lstlisting}


\section{Test}

Per eseguire i test è necessario spostarsi all'interno della cartella del sorgente dell'applicazione e poi lanciare il relativo comando:
\newline
\begin{lstlisting}[style=BashInputStyle]
    $ cd mivan
    $ ./mvnw clean verify
\end{lstlisting}


\section{Build}

L'operazione di build genera un file \code{.jar} all'interno della cartella di nome \code{target}, la quale se non è già presente verrà creata runtime.\newline
Per seguire la build è necessario spostarsi all'interno della cartella del sorgente dell'applicazione e poi lanciare il relativo comando:
\newline
\begin{lstlisting}[style=BashInputStyle]
    $ cd mivan
    $ ./mvnw clean package spring-boot:repackage
\end{lstlisting}

\section{Avvio tramite linea di comando}

L'avvio immediato dell'applicazione, utile durante lo sviluppo si esegue con un solo comando. Si ricorda che prima è necessario spostarsi all'interno della cartella del sorgente dell'applicazione:
\newline
\begin{lstlisting}[style=BashInputStyle]
    $ cd mivan
    $ ./mvnw spring-boot:run
\end{lstlisting}

\section{Avvio tramite Docker}

Per poter eseguire l'applicazione per mezzo di Docker container è necessario soddisfare i requisiti indicati all'inizio di questo capitolo. Il vantaggio di usare Docker è che semplifica notevolmente sia la fase di sviluppo che di deploy dell'applicazione, specialmente per l'ultimo punto che ne riduce in maniera sensibile sia il tempo che la complessità.

\begin{leftbar}
      \noindent\textbf{Nota:}\newline Per poter utilizzare docker è necessario avere i privilegi di root od essere nel gruppo \code{docker}!.
\end{leftbar}

Un comodo strumento di cui faremo uso per gestire i container è Compose, di cui, dato il file \code{.yml} già compilato alla radice della repository eseguiamo il comando di build:
\newline
\begin{lstlisting}[style=BashInputStyle]
    $ sudo docker-compose build
\end{lstlisting}

E poi, una volta buildate le immagini dei container, le eseguiamo:
\newline
\begin{lstlisting}[style=BashInputStyle]
    $ sudo docker-compose up
\end{lstlisting}
