Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.

Al momento sono presenti i seguenti environment:

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:

Sono inoltre presenti le configurazioni per PostgreSQL ed Entando 7.4:

Vai all'indice


About

Entando Development Environment

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages