Gli obbiettivi di questo progetto sono:
- fornire un ambiente di sviluppo locale a supporto della entando-de-app
7.3 - avviare tutti i componenti necessari
- supportare un ambiente di sviluppo multitenant
- Entando:
Entando 7.3
Il file di partenza della configurazione è il file .env.
In tale file sono presenti i seguenti parametri:
COMPOSE_PROJECT_NAME: il nome del progetto, che è usato come prefisso dei container. Di default èportal.COMPOSE_FILE: il nome del file con la configurazione del docker-compose
Se si vuole cnfigurare un nuovo ambiente, ad esempio per una particolare versione di entando o un nuovo progetto,
occorre partire da qui.
Un caso d'uso classico è quello di una versione particolare di entando, o un progetto.
Sarà buona norma creare un nuovo file docker-compose, e configurarlo come valore del parametro COMPOSE_FILE del file .env.
Il docker-compose andrà configurato opportunamente nei volumi, in modo da non andare in conflitto con la configurazione degli altri progetti.
Per prima cosa occorre definire una serie dominio di riferimento, es:
- entando:
portal.entando.local
- keycloak:
portal.entando.localconcontextuguale adauthauth.entando.localsu dominio distinto
- cds (Content Delidery Service):
portal.entando.localconcontextuguale acdscds.entando.localsu dominio distinto
- eventuali tenant: es:
t1.entando.localt2.entando.localt3.entando.local
Occorre inoltre definire i context dei vari applicativi, es:
- entando:
/entando-de-app - app builder:
/app-builder - keycloak:
/auth - cds:
/cds
Occorre configurare/modificare i domini nei seguenti punti:
server_name portal.entando.local;
...
server_name auth.entando.local;
...
server_name cds.entando.local;
...
server_name t1.entando.local;
...
server_name t2.entando.local;
...
server_name t3.entando.local;
- comando di avvio:
- file
etc/hostsdella macchina, es:
127.0.0.1 portal.entando.local auth.entando.local cds.entando.local t1.entando.local t2.entando.local t3.entando.local
Questo sistema fa uso delle seguenti porte:
- 8080: porta utilizzata dalla
entando-de-app, definita in:- comando di avvio:
-Djetty.http.port=8080 - nginx.conf:
proxy_pass http://172.17.0.1:8080;
- comando di avvio:
- 15432: porta utilizzata dal container di
postgres, definita in:
-Dportdb.url=jdbc:postgresql://localhost:15432/entando?currentSchema=port
...
-Dservdb.url=jdbc:postgresql://localhost:15432/entando?currentSchema=serv
- 16379: porta utilizzata dal container di
redis, definita in:
-DredisAddress=redis://localhost:16379
- 18080: porta utilizzata dal container di
cds, definita in:
-DCDS_PRIVATE_URL=http://localhost:18080/
- 80: porta utilizzata dal container di
nginx, definita in:
- entando-de-app
- admin-console
- app-builder
- cds oppure cds
- keycloak oppure keycloak
I container possono essere avviati col comando:
docker-compose up -d --no-deps --buildOppure utilizzando lo script:
./docker-create.shI container possono essere stoppati col comando:
docker-compose down --rmi localOppure utilizzando lo script:
./docker-destroy.shIl docker-compose crea una istanza di PostgreSQL contenente un DB entando inizializzato coi seguenti schema:
- port
- serv
- keycloak
- digital_exchange
- t1
- t2
- t3
Ogni schema ha utente e password uguali al nome dello schema.
Il container espone la porta 15432
Comando di rigenerazione container:
./docker-service-regen.sh postgresqlIl docker-compose crea una istanza di MySQL contenente i seguenti DB:
- port
- serv
- keycloak
- digital_exchange
- t1
- t2
- t3
Come credenziali di accesso possono essere utilizzate root/password
Il container espone la porta 13306
Comando di rigenerazione container:
./docker-service-regen.sh mysqlIl database di keycloak è popolato usando i file contenuti nella directory realm-config
Questi file generano i realm:
- entando-dev
- entando-t1
- entando-t2
- entando-t3
Ogni realm contiene i client:
- external: avente come password
external, usato per l'accesso esterno da entando, come superuser - webapp: usato per l'accesso da app-builder
Ogni realm contiene gli utenti:
- admin: avente password admin
- user: avente password user
Comando di rigenerazione container:
./docker-service-regen.sh keycloakTODO
Comando di rigenerazione container:
./docker-service-regen.sh redisSorgenti: release 7.3
Comando di rigenerazione container:
./docker-service-regen.sh app-builder**** IMPORTANTE! ****
Avviato Keycloak la prima volta, occorre estrapolare la "Public Key" da ogni REALM,
e inserirla nel relativo parametro di environment del docker-compose.
Le chiavi possono essere recuperate nei seguenti link:
Al termine occorre rigenerare i container della CDS
Comando di rigenerazione container:
./docker-service-regen.sh cds
./docker-service-regen.sh cds-t1
./docker-service-regen.sh cds-t2
./docker-service-regen.sh cds-t3TODO
Comando di rigenerazione container:
./docker-service-regen.sh nginxI volumi sono dentro la cartella _volumes.
Se si desidera cambiare i volumi, ad esempio per differenti environment, si può procedere come segue:
- rinominare, dentro aaa, tutte le occorrente di
_volumes/portalin_volumes/custom-project, dove custom-project va personalizzato come si preferisce
Il file system dei volumi può dare problemi per via dei permessi di r/w,
sia per esplorarne il contenuto, che soprattutto per i container in fase di avvio.
Può essere utile modificare i permessi in modo che le directory e i file siano visibili e modificabili a tutti.
Ovviamente questa soluzione espone alla possibilità che un altro utente della macchina possa accedere a questi dati.
Si sconsiglia di farlo, soprattutto in presenza di dati (es: i database) sensibili.
Il seguente comando, rende la directory _volumes e tutte le sotto-directory, visibili a tutti:
sudo find _volumes/ -type d -exec chmod 777 {} \;mentre il seguente comando rende i file sotto l'alberatura di _volumes visibili e modificabili da tutti:
sudo find _volumes/ -type f -exec chmod 666 {} \;Occorre creare il progetto partendo dai sorgenti di app-engine
Es:
git clone -b release/7.3 https://github.com/entando/app-engine/Il progetto richiede Java 11.
Una volta clonato il progetto e importato su 'IntelliJ', occorre:
- aprire
File -> Project Structure - nella sezione
Project:- modificare la voce
SDKimpostando11 - modificare la voce
Language LevelimpostandoSDK default
- modificare la voce
- assicurarsi che i moduli (sezione
Modules) facciano tutti uso della SDK11
Per configurare l'avvio di Entando occorre:
- aprire
Edit Configurations - aggiungere/modificare una
New ConfigurationdiMaven - definire un name adatto (es: il nome del progetto)
- selezionare come
Working Directoryla cartellawebapp - assicurarsi che la
JREin uso sia la11 - definire nel campo
Runcome in questo esempio opportunamente modificato (in base a quanto definito nel resto del documento) - in Java Options, abilitare Environment Variables e valorizzare il campo secondo questo esempio opportunamente modificato (in base a quanto definito nel resto del documento)
In alternativa si possono usare e modificare i file di esempio contenuti dentro la cartella .run ed elencati nel paragrafo seguente
Dentro la cartella .run sono presenti configurazioni di run di IntelliJ. In particolare:
- Portale con Multitenancy
- Portale senza Multitenancy
- Portale senza App Builder
- Portale senza Keycloak
Sono inoltre presenti le configurazioni anche per MySQL:
- Portale con Multitenancy
- Portale senza Multitenancy
- Portale senza App Builder
- Portale senza Keycloak