\section{Requisiti} L'applicazione è stata sviluppata, eseguita e testata su sistemi \textit{UNIX Like}, in particolare sulla distribuzione \textit{GNU/Linux Debian}. Per questo questo motivo le istruzioni che seguono saranno incentrate su questo ambiente, ma dovrebbero valere per tutti gli altri sistemi. Per rendere la propria macchina pronta ad eseguire l'applicazione è necessario installare i pacchetti \code{openjdk} (la versione 8 è sufficiente) e \code{mvn} corrispondenti rispettivamente a \textit{Open Java Development Kit} ed al tool \textit{Apache Maven} \cite{maven}; 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 \textit{Docker} allora le dipendenze sono \textit{docker-compose}\cite{docker}, ed ovviamente \textit{docker} stesso. \textit{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 \code{pip}. \cite{pip} 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 \textit{verrà creata a runtime}. Per eseguire la build è necessario spostarsi all'interno della cartella del sorgente dell'applicazione e poi lanciare il wrapper \code{mvnw}: \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 \textit{notevolmente} sia la fase di sviluppo che di \textit{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 è \textit{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 l'immagine del container, lo lanciamo: \newline \begin{lstlisting}[style=BashInputStyle] $ sudo docker-compose up \end{lstlisting}