Skip to content

eliamezzano/entando-dev-env

Repository files navigation

Docker per Ambiente di sviluppo di Entando

Indice

Introduzione

Obbiettivi del progetto

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

Vai all'indice


Versioni di riferimento

  • Entando: Entando 7.3

Vai all'indice


Prerequisiti

Definizione Environment

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.

Vai all'indice


Definizione Domini

Per prima cosa occorre definire una serie dominio di riferimento, es:

  • entando:
    • portal.entando.local
  • keycloak:
    • portal.entando.local con context uguale ad auth
    • auth.entando.local su dominio distinto
  • cds (Content Delidery Service):
    • portal.entando.local con context uguale a cds
    • cds.entando.local su dominio distinto
  • eventuali tenant: es:
    • t1.entando.local
    • t2.entando.local
    • t3.entando.local

Occorre inoltre definire i context dei vari applicativi, es:

  • entando: /entando-de-app
  • app builder: /app-builder
  • keycloak: /auth
  • cds: /cds

Vai all'indice


Configurazione Domini

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;
127.0.0.1		portal.entando.local auth.entando.local cds.entando.local t1.entando.local t2.entando.local t3.entando.local

Vai all'indice


Porte in uso

Questo sistema fa uso delle seguenti porte:

-Dportdb.url=jdbc:postgresql://localhost:15432/entando?currentSchema=port
...
-Dservdb.url=jdbc:postgresql://localhost:15432/entando?currentSchema=serv
-DredisAddress=redis://localhost:16379
-DCDS_PRIVATE_URL=http://localhost:18080/
  • 80: porta utilizzata dal container di nginx, definita in:

Vai all'indice


Link finali

Vai all'indice


Applicativi Docker

Avvio dei container

I container possono essere avviati col comando:

docker-compose up -d --no-deps --build

Oppure utilizzando lo script:

./docker-create.sh

Vai all'indice


Stop dei container

I container possono essere stoppati col comando:

docker-compose down --rmi local

Oppure utilizzando lo script:

./docker-destroy.sh

Vai all'indice


Postgres

Il 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 postgresql

Vai all'indice


MySQL

Il 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 mysql

Vai all'indice


Keycloak

Il 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 keycloak

Vai all'indice


Redis

TODO

Comando di rigenerazione container:

./docker-service-regen.sh redis

Vai all'indice


App Builder

Sorgenti: release 7.3

Comando di rigenerazione container:

./docker-service-regen.sh app-builder

Vai all'indice


CDS

Documentazione

**** 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-t3

Vai all'indice


Nginx

TODO

Comando di rigenerazione container:

./docker-service-regen.sh nginx

Vai all'indice


Volumi

I 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/portal in _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 {} \;

Vai all'indice


Entando De App

Creazione Progetto

Occorre creare il progetto partendo dai sorgenti di app-engine

Es:

git clone -b release/7.3 https://github.com/entando/app-engine/

Vai all'indice


Configurazione IntelliJ

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 SDK impostando 11
    • modificare la voce Language Level impostando SDK default
  • assicurarsi che i moduli (sezione Modules) facciano tutti uso della SDK 11

Vai all'indice


Avvio su IntelliJ

Per configurare l'avvio di Entando occorre:

  • aprire Edit Configurations
  • aggiungere/modificare una New Configuration di Maven
  • definire un name adatto (es: il nome del progetto)
  • selezionare come Working Directory la cartella webapp
  • assicurarsi che la JRE in uso sia la 11
  • definire nel campo Run come 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

Configurazione di Run

Dentro la cartella .run sono presenti configurazioni di run di IntelliJ. In particolare:

Sono inoltre presenti le configurazioni anche per MySQL:

Vai all'indice


About

Entando Development Environment

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published