GrantForge

    Distribuzione e gestione

    Docker, Compose e Helm

    Esegui GrantForge con le immagini container, provalo con Compose insieme ai vari database e distribuiscilo su Kubernetes con Helm.

    Immagini

    Ogni versione pubblica un’immagine ghcr.io/devlive-community/grantforge:<versione> (linux/amd64 e linux/arm64) e le versioni stabili aggiornano anche latest:

    docker run -p 9999:9999 ghcr.io/devlive-community/grantforge:2026.0.0

    L’immagine viene costruita dal pacchetto di rilascio, si basa su eclipse-temurin:21-jre, viene eseguita con un utente non privilegiato (UID 10001), scrive i log sulla console e non include un database. La si può anche costruire da sé dal codice sorgente:

    ./mvnw -DskipTests package
    docker build -f deploy/docker/Dockerfile -t grantforge dist

    Convenzioni dell’immagine:

    Percorso / variabile Spiegazione
    /opt/grantforge/data volume: i file di dati dell’H2 incorporata
    /opt/grantforge/plugins volume: plug-in per tipi di servizio
    /opt/grantforge/drivers driver JDBC aggiuntivi (qui va il MySQL Connector/J)
    9999 porta del servizio
    HEALTHCHECK interroga /actuator/health/readiness

    Esempio di Compose

    deploy/compose/ contiene un esempio per ogni database: h2, postgres, mariadb, mysql, sqlserver, oracle.

    docker compose -f deploy/compose/postgres.yml up -d
    docker compose -f deploy/compose/postgres.yml logs grantforge | grep "setup token"

    Poi apri http://127.0.0.1:9999/. La password predefinita del database usata dagli esempi è adatta solo per le prove: cambiala con GRANTFORGE_DB_PASSWORD prima dell’uso in produzione. L’esempio MySQL richiede di aver prima inserito mysql-connector-j-<versione>.jar in deploy/compose/drivers/.

    Helm

    deploy/helm/grantforge è un chart Helm: uno StatefulSet con un database esterno, in cui ogni replica ottiene il proprio numero di nodo ID in base all’ordinale del Pod (richiede Kubernetes 1.28 o superiore).

    helm install grantforge deploy/helm/grantforge \
      --set database.url=jdbc:postgresql://postgresql:5432/grantforge \
      --set database.username=grantforge \
      --set database.existingSecret=grantforge-db \
      --set encryptionKey=$(openssl rand -base64 32)

    Parametri più usati:

    Parametro Valore predefinito Spiegazione
    image.repository / image.tag ghcr.io/devlive-community/grantforge / l’appVersion del chart immagine
    replicaCount 1 numero di repliche, può essere maggiore di 1
    database.url / username / password — connessione al database; si consiglia di mettere la password in existingSecret
    setupToken vuoto token di inizializzazione preimpostato; se è vuoto viene stampato nel log
    encryptionKey vuoto chiave Base64 a 32 byte per le chiavi conservate cifrate (password delle fonti di identità, chiavi dei verificatori, chiavi private di firma, ecc.); se è vuota viene generata automaticamente e salvata nel database
    cookieSecure false impostalo su true quando TLS termina all’Ingress; il cookie di sessione porta sempre Secure
    ingress.* disattivato espone la console e l’API
    plugins.persistence.enabled false monta un volume persistente per la directory dei plug-in
    podDisruptionBudget.enabled false si consiglia di attivarlo con più repliche

    Modifica questa pagina su GitHub