Istruzioni per l'esecuzione
Il progetto è stato testato su due macchine:
- macOS Big Sur 11.2.3, Intel Core i9-9880H 2.30 GHz CPU, 16 GB RAM;
- Windows 10 20H2 build 19042.928, Intel Core i5-3550 3.30 GHz CPU, 16 GB RAM.
Entrambi con Docker versione 20.10.5, build 55c4c88 e docker-compose versione 1.29.0, build 07737305.
1. Clonare il repository
Il progetto è diviso in due macro-repository:
- codice sorgente: project-sources;
- report progetto: project-documentation.
Il repository project-sources contiene il codice sorgente dei diversi servizi (submodules del repository) e alcuni file di configurazione per il lancio dei servizi tramite docker-compose
.
Per clonare il repository e i suoi submodule è sufficiente utilizzare il comando:
git clone --recurse-submodules git@github.com:sosengers/project-sources.git
2. Creare i file di environment necessari
Per poter funzionare correttamente, alcuni servizi hanno bisogno che alcune variabili d'ambiente siano impostate prima della loro esecuzione. Per far questo è necessario creare dei file di environment in specifiche cartelle. Questi file contengono password, API KEY e URL che cambiano da macchina a macchina. Di seguito vengono presentati i contenuti dei file environment sufficienti per far funzionare il sistema nel suo intero:
flight-company/.env
POSTGRES_USER="flight_company_admin" POSTGRES_PASSWORD="password"
-
geographical-distances/.env
Al posto diOPEN_CAGE_API_KEY="OpenCage API key"
OpenCage API key
bisogna mettere una chiave di OpenCage valida, generabile creando un profilo tramite il sito OpenCage e accedendo alla propria area utente. -
acmesky-middleware/.env
FLASK_SECRET="flasksecret" RABBITMQ_HOST="acmesky_mq" MIDDLEWARE_HOST="0.0.0.0" MIDDLEWARE_PORT="8080"
ProntoGram-Frontend/.env
FLASK_SECRET="flasksecret" RABBITMQ_HOST="prontogram_mq" PRONTOGRAM_HOST="0.0.0.0" PRONTOGRAM_PORT="8080"
camunda-workers/.env
POSTGRES_USER="acmesky_admin" POSTGRES_PASSWORD="password" MONGO_USER="root" MONGO_PASSWORD="password"
ProntoGram-Frontend/prontogram/static/js/environment.js
const prontogramSocket = 'http://0.0.0.0:8000';
PaymentProvider-Backend/.env
PAYMENT_PROVIDER_FRONTEND="http://127.0.0.1:4002"
PaymentProvider-Frontend/src/environments/environment.ts
export const environment = { paymentProviderBackend: "http://127.0.0.1:4001", production: true };
ACMESky-Frontend/src/environments/environment.ts
export const environment = { acmeskyBackend: "http://127.0.0.1:9000", acmeskyMiddleware: "http://127.0.0.1:9001", production: true };
3. Eseguire i servizi
Il file docker-compose.yaml
contiene le indicazioni per docker-compose su come debbano essere avviati i diversi servizi.
Per eseguire tutti i servizi è sufficiente lanciare il comando:
docker-compose up
--build
per forzare la compilazione (nel caso non sia la prima volta in cui si utilizza il comandodocker-compose
con questo file;-d
per lanciare i container in modalità detached, liberando il terminale una volta lanciati tutti quanti.
Per spegnere tutti i servizi:
- se si è usato solo il comando
docker-compose up
, è sufficiente premere CTRL + C ; - se si è avviato in modalità detached è possibile invocare il comando:
docker-compose down
Nel caso invece si vogliano eseguire i servizi solamente di alcuni ruoli, è stato creato un Makefile che ne semplifica la selezione:
- ACMESky
make acmesky
- Payment Provider
make payment_provider
- Travel Companies
make travel_companies
- Flight Companies
make flight_companies
- Geographical Distances
make geographical_distances
- ProntoGram
make prontogram
Di default i log di alcuni servizi sono disabilitati per avere un output più chiaro e pulito. Per riabilitarli è sufficiente commentare (#
) le righe nel file docker-compose.yaml
in cui il driver per il log viene definite come none
:
logging:
driver: none
4. Caricamento dei dati di esempio
Per poter testare il sistema è necessario caricare dei dati di esempio dei voli delle compagnie aeree.
Il container del database delle compagnie aeree (flight_companies_db
) ha già dei dataset precaricati, è sufficiente importarli all'interno delle tabelle dei database. Questo è possibile farlo mediante i seguenti tre (perché tre sono le compagnie aeree di esempio) comandi:
- per
Flight Company 1
docker exec -it flight_companies_db psql -U flight_company_admin -d flightcompany1 -c "COPY flights(flight_id, departure_airport_code, arrival_airport_code, cost, departure_datetime, arrival_datetime) FROM '/example_data/Flight company 1-FC 1.csv' DELIMITER ';' CSV HEADER;"
- per
Flight Company 2
docker exec -it flight_companies_db psql -U flight_company_admin -d flightcompany2 -c "COPY flights(flight_id, departure_airport_code, arrival_airport_code, cost, departure_datetime, arrival_datetime) FROM '/example_data/Flight company 2-FC 2.csv' DELIMITER ';' CSV HEADER;"
- per
Flight Company 3
docker exec -it flight_companies_db psql -U flight_company_admin -d flightcompany3 -c "COPY flights(flight_id, departure_airport_code, arrival_airport_code, cost, departure_datetime, arrival_datetime) FROM '/example_data/Flight company 3-FC 3.csv' DELIMITER ';' CSV HEADER;"
Nota sui comandi precedenti
Se si è modificato la variabile d'ambiente POSTGRES_USER
definita nel file flight-company/.env
allora è necessario modificare il nome utente passato dopo il parametro -U
nei tre comandi precedenti.
5. Accesso ai servizi
Se i punti precedenti sono stati seguiti correttamente e tutti i servizi sono attivi, è possibile accedere:
- ad ACMESky all'indirizzo http://127.0.0.1:5002;
- a ProntoGram all'indirizzo http://127.0.0.1:8000;
- alla dashboard di Camunda (accedendo con username demo e password demo) http://127.0.0.1:10000/camunda/.