Ventura Samuele
Matricola: 793060
Repository Git: https://gitlab.com/s.ventura/prosvil1
Si è sviluppata una semplice applicazione web con la quale è possibile creare degli utenti (nome,cognome,email e password) e accedere attraverso le proprie credenziali.
Ad ogni accesso alla pagina WelcomeUser.html l'applicazione mostra il numero di volte che l'utente ha già visitato questa pagina.
Per sviluppare l'app si è sfruttato il linguaggio Python e il framework Flask, mentre per salvare i dati inseriti dall'utente e verificarne la presenza si è sfruttato il database MySql.
Il primo punto sviluppato è stata la creazione di immagini, da cui poi attivare i container necessari per eseguire l'app, sfruttando la piattaforma Docker.
Per creare le immagini sono stati scritti i seguenti file:
-
2 file denominati Dockerfile
- sono stati utilizzati per creare due immagini, una per creare un container MySQL e una per creare l'applicazione in ambiente Python. Per la prima si è sfruttata l'immagine ufficiale presente nel DockerHub mysql:5.6, per quanto rigurda python invece si è sfruttata un'immagine di partenza ridotta, python:2.7-alpine3.7 e si sono installati i pacchetti necessari per ridurre la dimensione dell'immagine stessa.
-
docker-compose.yml
- si sono definiti i due container, web che rappresenta la parte di interfaccia e server, e db che invece rappresenta la parte di database, ecco alcuni esempi di istruzioni inserite nel file
-
requirements.txt : file in cui si elencano i vari moduli, in questo caso librerie sfruttate dal linguaggio python
Per avviare l'app è necessario eseguire il comando docker-compose up che legge ed esegue le istruzioni scritte nei tre file appena descritti e avvia i container implementati, eseguendo l'app, sulla porta specifica nel dockerfile.
Con il comando docker image ls è possibile vedere tutte le immagini scaricate che possono essere avviate con docker run
Si possono anche elencare tutti i container e servizi attivi al momento con docker ps
Come si può vedere dall'immagine i servizi attivi sono i due indicati nel docker-compose.
Per sviluppare una pipeline di continuous integration si è sfruttato il tool interno di gitlab che permette di definire vari stage automaticamente avviati nel momento di una commit. Si sono definiti due stage:
- build che costruisce le due immagini e avvia i due container
- test che invece esegue dei semplici test sui templates creati
La commit è effettivamente realizzata solo se tutti gli stage sono eseguiti con successo.