Mit Docker-Installer

Dieses Kapitel enthält eine Schritt-für-Schritt-Beschreibung des Installationsprozesses für Allegra in einem Docker-Container mit einer MySQL-Datenbank.

Dieses Kapitel beschreibt

  1. Wie Sie das Allegra Docker-Paket erhalten

  2. Wie Sie Allegra in einem Docker-Container installieren und ausführen

Allegra Docker Package

Schritt 1: Allegra Docker Package herunterladen

Laden Sie sich das Allegra Docker Package von der Allegra Download-Seite herunter und speichern Sie es in einem leeren Verzeichnis.

mkdir $HOME/adocker
cd $HOME/adocker
export WORKDIR="$HOME/adocker"
wget https://www.trackplus.com/files/downloads/latest-dist/core/allegra-latest-docker.tar -O allegra-docker.tar

Schritt 2: Allegra Docker Package entpacken

Entpacken Sie die Datei:

tar -xvf allegra-docker.tar
ls -al

Sie sollten u.a. jetzt sehen:

  • eine Befehlsdatei allegra-quickstart.sh

  • eine Docker-Datei allegra-$VERSION.dockerfile

  • eine Docker-Datei allegra-base.dockerfile

  • eine Docker-Datei allegra-base-tex.dockerfile

Vorbereitung

Hardware-Anforderungen

Stellen Sie sicher, dass die Voraussetzungen hinsichtlich der Laufzeitumgebung erfüllt sind.

Docker-Installation prüfen

Stellen Sie sicher, dass Docker auf Ihrem Server installiert ist und der Docker-Daemon läuft.

docker ps --all

Installation mit Shell-Skript

Um Allegra auf der Befehlszeile zu installieren und auszuführen, geben Sie ein:

./allegra-quickstart.sh

Nach einiger Zeit sollte Ihr System unter http://ihrServer.com:$HTTP_PORT/$CONTEXT zugänglich sein. Für eine Produktivumgebung sollten Sie vor allem das Arbeitsverzeichnis, den Port und den Kontext im Skript ganz oben anpassen.

...
HTTP_PORT=8082
ALLEGRA_HOME=/tmp/allegra/demo
CONTEXT=demo
...

Installation mit Docker Composer

Mit Hilfe des Docker Composers können Sie den Verbund von Datenbank und Servlet-Container einfacher verwalten als mit einem Skript. Bevor Sie das System das erste mal starten, sollten Sie

  1. ein Arbeitsverzeichnis erstellen

  2. das Arbeitsverzeichnis konfigurieren

  3. den HTTP-Port anpassen, unter dem Allegra erreichbar sein wird

  4. optional den zur Verfügung stehenden Speicher einstellen

Die zugehörigen Einstellungen nehmen Sie in der versteckten Datei .env vor. Diese sieht z.B. so aus:

CONTEXT=demo
ALLEGRA_HOME=/tmp/allegra
HTTP_PORT=8082
JAVA_OPTS=-Djava.awt.headless=true -Xmx1024m -Xms512m

1. Arbeitsverzeichnis erstellen

Erstellen Sie ein Verzeichnis, das Konfigurationsdaten, Indexe und Anhänge für Ihre Allegra-Instanz enthalten wird. Dort sollten zwischen 1 und 10 GByte Speicherplatz zur Verfügung stehen, je nach Nutzungsgrad und Anzahl der Nutzer. Im folgenden nennen wir dies ALLEGRA_HOME.

mkdir -p $HOME/allegra
export ALLEGRA_HOME=$HOME/allegra

2. Arbeitsverzeichnis konfigurieren

Öffnen Sie die Datei .env und passen Sie die Variable ALLEGRA_HOME an Ihre Umgebung an. Stellen Sie sicher, dass das Arbeitsverzeichnis ALLEGRA_HOME existiert und schreibbar ist.

3. HTTP-Port konfigurieren

In der Datei .env setzen Sie die Variable HTTP_PORT auf den gewünschten Wert.

4. JAVA_OPTS konfigurieren

In der Datei .env setzen Sie die Variable JAVA_OPTS auf den gewünschten Wert. Hier können Sie insbesondere den zur Verfügung stehenden Hauptspeicher konfigurieren (Minimum: 512 MB).

System starten

Starten Sie das System mit

docker compose up -d

Die zugehörige Steuer-Datei heißt docker-compose.yml und sieht so aus:

version: "3.9"
services:
    db:
        image: postgres:13-bullseye
        restart: always
        container_name: allegra-${CONTEXT}-db
        volumes:
            - ${ALLEGRA_HOME}/dbdata:/var/lib/postgresql/data
        environment:
            - POSTGRES_DB=allegra-${CONTEXT}
            - POSTGRES_USER=allegra
            - POSTGRES_PASSWORD=tissi189
        ports:
            - "8001:5432"
        healthcheck:
            test: ["CMD-SHELL", "pg_isready -U allegra -d allegra-${CONTEXT}"]
            interval: 10s
            timeout: 5s
            retries: 2
    allegra:
        image: allegrapm/core:7.2
        restart: always
        container_name: allegra-${CONTEXT}
        volumes:
            - ${ALLEGRA_HOME}:/home/allegra
        environment:
            JAVA_OPTS: ${JAVA_OPTS}
            CONTEXT: ${CONTEXT}
            DB_URL: jdbc:postgresql://db/allegra-${CONTEXT}
            DB_USER: allegra
            DB_PASSWD: tissi189
        ports:
            - "${HTTP_PORT}:8080"
            - "8089:8009"
        depends_on:
            db:
                condition: service_healthy

Allegra-Image-Umgebungsvariablen

Das Allegra-Image verwendet mehrere Umgebungsvariablen, um eine Datenbankverbindung und einen Dateispeicherort für die Speicherung von Anhängen und Konfigurationsdateien bereitzustellen.

Hinweis

Die im folgenden beschriebenen Umgebungsvariablen beziehen sich auf das Allegra Image und haben keinen direkten Bezug zu den Eintragungen in der Datei .env für den Docker Composer. Ein Bezug wird wenn überhaupt erst über die Datei docker-compose.yml hergestellt.

CONTEXT

Die Umgebungsvariable CONTEXT bestimmt die URL, unter der die Allegra-Instanz sichtbar sein wird. Die URL wird wie http://<yourmachine>:8080/$CONTEXT aussehen, vorausgesetzt Sie haben den Port 8080 des Containers auf 8080 außerhalb Ihres Containers abgebildet. Der Standardwert ist allegra.

DB_URL

Dies definiert die JDBC-Treiber-URL, unter der Allegra die Datenbank finden kann. Diese Datenbank muss existieren, bevor Sie Allegra starten. Der durch DB_USER definierte Benutzer und das Passwort DB_PASSWD sollten alle Rechte auf diese Datenbank erhalten haben.

Hier sind einige DB_URL Beispiele:

  • PostgreSQL: jdbc:postgresql://yourdbserver/allegra

  • MySQL: jdbc:mysql://localhost:3306/allegra?useSSL=false&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC

  • Oracle: jdbc:oracle:thin:@80.96.67.62:1521:orcl

  • Microsoft SQLServer: jdbc:jtds:sqlserver://localhost/allegra

  • Firebird: jdbc:firebirdsql://localhost/home/allegra/dbase/ALLEGRA.GDB?charSet=UTF-8

  • DB2: jdbc:db2:ALLEGRA

DB_ADAPTER

Um sich mit einer Datenbank zu verbinden, muss Allegra deren Typ kennen. Die folgenden Typen werden von diesem Image unterstützt:

  • postgresql

  • mysql

  • mssql

  • oracle (mit zusätzlicher Bibliothek)

  • firebird

  • db2app (mit zusätzlicher Bibliothek)

Hinweis

Oracle- und DB2-Datenbanken benötigen zusätzliche JDBC-Treiber, die nicht in diesem Image enthalten sind. Siehe Hinzufügen von JDBC-Treibern für weitere Informationen.

Das standardmäßig verwendete Datenbanksystem ist PostgreSQL.

DB_DRIVER

Mit dieser Variable definieren Sie die zu verwendende JDBC-Treiberklasse. Sie hängt von der Art der Datenbank ab, die Sie verwenden wollen (DB_ADAPTER).

Die Voreinstellung ist org.postgresql.Driver für eine PostgreSQL Datenbank.

Andere Beispiele sind:

  • MySQL: org.gjt.mm.mysql.Driver

  • Oracle: oracle.jdbc.driver.OracleDriver

  • Microsoft SQLServer: net.sourceforge.jtds.jdbc.Driver

  • Firebird: org.firebirdsql.jdbc.FBDriver

  • DB2: com.ibm.db2.jdbc.app.DB2Driver

DB_USER

DB_USER definiert den Benutzer, unter dem Allegra auf die Datenbank zugreift. Der Standardwert ist allegra.

DB_PASSWD

DB_PASSWD definiert das Passwort für den Benutzer, unter dem Allegra auf die Datenbank zugreift.

Der Standardwert ist Tissi189.

JAVA_OPTS

Die JAVA_OPTS werden an die virtuelle Maschine von Allegra/Tomcat weitergegeben. Hier können Sie den für Ihre Allegra-Instanz verfügbaren Speicher einstellen. Beispiel und Vorgabe:

-Djava.awt.headless=true -Xmx2048m -Xms512m -XX:MaxRAM=2500m -Duser.timezone=Europe/Berlin

Hinzufügen von JDBC-Treibern

Wir empfehlen, zusätzliche JDBC-Treiber hinzuzufügen, indem Sie ein neues Docker Image zu erstellen, das auf dem Allegra Image basiert. Die Bibliotheken sollten in dem Verzeichnis /usr/local/tomcat/lib abgelegt werden.

Zur Sicherheit

Wenn Sie den Allegra-Server produktiv betreiben möchten, sollten Sie ihn hinter einen nginx oder Apache Proxy-Server legen. So stellen Sie sicher, dass nur SSL-gesicherte Verbindungen genutzt werden und exponieren den Tomcat nicht im Internet.

Anleitungen dazu gibt es z.B. hier: