Skip to content

Latest commit

 

History

History
1099 lines (891 loc) · 38.9 KB

Documentation-German.adoc

File metadata and controls

1099 lines (891 loc) · 38.9 KB

Klaros-Testmanagement Docker-Integration

1. Einführung

Diese Dokumentation behandelt die Installation von Klaros-Testmanagement für Produktionssysteme, die eine MariaDB-, MSSQL-, MySQL- oder PostgreSQL-Datenbank verwenden. Die Anleitung für die Testinstallationen mit der integrierten Apache Derby-Datenbank finden Sie hier.

In dieser Dokumentation wird Schritt für Schritt gezeigt, wie die Installation und Konfiguration von Klaros-Testmanagement unter Docker für Windows und Linux durchgeführt wird.

1.1. Über Docker

Docker ist eine freie, containerbasierte Software, die eine sichere Installation von Anwendungen auf verschiedenen Betriebssystemen wie Windows und Linux ermöglicht.

Ausführliche Informationen dazu finden Sie unter Why-Docker.

1.2. Über Klaros-Testmanagement

Klaros-Testmanagement ist eine professionelle webbasierte Testmanagement-Software. Sie enthält Komponenten für das Ressourcenmanagement und die Auswertung der Testaktivität. Die Verfolgung von Testanforderungen wird ebenso unterstützt wie agile Entwicklungsprozesse. Zahlreiche Schnittstellen zu Issue Trackern, Testautomatisierungstools und Continuous Integration Servern ermöglichen eine nahtlose Integration in bestehende Entwicklungsumgebungen.

Klaros-Testmanagement ist in der Community Edition kostenlos erhältlich und uneingeschränkt auch für kommerzielle Zwecke einsetzbar.

Die Enterprise Edition bietet Ihnen den vollen Funktionsumfang, inklusive einjährigem Support und kostenlosem Zugriff auf alle Software-Updates. Eine Feature-Übersicht der beiden Editionen sehen Sie hier.

Eine kostenlose 30-tägige Testlizenz für die Enterprise Edition, können Sie hier anfordern.

Ausführliche Informationen, umfangreiche Dokumentationen, Videos sowie eine frei zugängliche Online-Demo finden Sie unter Klaros-Testmanagement.

2. Voraussetzungen

Windows

Die aktuellen Hardwareanforderungen und Installationsschritte sind in der offiziellen Docker-Dokumentation beschrieben. Für die Installation von Docker Desktop ist eine Anmeldung erforderlich.

Um das spätere Aktualisieren von Klaros-Testmanagement zu erleichtern, wird empfohlen, das Dockerfile von GitHub mit Git herunterzuladen.

Damit sind die Vorbereitungen für Windows abgeschlossen. Im Kapitel Installation wird beschrieben, wie das Dockerfile mithilfe von Git Bash heruntergeladen und für zukünftige Updates vorbereitet werden kann.

Linux

Auf der offiziellen Docker-Dokumentation sind die aktuellen Hardwareanforderungen und Installationsschritte zu finden.

Git-Installation über Ubuntu/Debian
sudo apt-get update
sudo apt-get install git
Git-Installation über CentOS/RHEL
sudo yum check-update
sudo yum install git-core
Ob die Installation erfolgreich war, lässt sich mit folgendem Kommando überprüfen
git --version
Ausgabe: git version 2.17.1

Damit sind die Vorbereitungen für Linux abgeschlossen. Im Kapitel Installation wird beschrieben, wie das Dockerfile heruntergeladen und für zukünftige Updates vorbereitet werden kann.

3. Docker-Umgebungsvariablen konfigurieren

Table 1. Konfigurierbare Umgebungsvariablen vor dem ersten Serverstart über das .env file
Variable Voreinstellung Beschreibung

DATABASE_HOST

db

Datenbank-Host

DATABASE_NAME

klaros

Datenbankname

DATABASE_USER

klaros

Datenbankbenutzer

DATABASE_CONTAINER_NAME

klaros_db

Containername für die Datenbank

DATABASE_PASSWORD

P@ssw0rd

Datenbank-Passwort

DATABASE_ROOT_PASSWORD

P@ssw0rd

[MariaDB/MySQL Only] Root Passwort für den „root“ Nutzer

DATABASE_PORT

10001

Öffentlicher Port, um von außen auf die Datenbank zuzugreifen

KLAROS_CONTAINER_NAME

klaros_postgresql

Containername für die Klaros-Testmanagement Anwendung

KLAROS_PORT

18080

Öffentlicher Port, um später auf die Webseite zuzugreifen

TOMCAT_PASSWORD

P@ssw0rd

Passwort für den Login auf 127.0.0.1:18080/monitoring

TIMEZONE

Zeitzone

MEMORY_MIN

128

Minimal verfügbarer Arbeitsspeicher in MB

MEMORY_MAX

786

Maximal verfügbarer Arbeitsspeicher in MB

VOLUME_NAME

klaros-data

Das Volume wird von Docker Compose automatisch mit dem Namen „klaros-data“ erzeugt, falls es nicht bereits vorhanden ist. Hier werden die Daten gespeichert

Table 2. Veränderbare Variablen nach dem ersten Serverstart über das .env file

DATABASE_CONTAINER_NAME

DATABASE_PORT

KLAROS_CONTAINER_NAME

KLAROS_PORT

TIMEZONE

MEMORY_MIN

MEMORY_MAX

VOLUME_NAME

Die Umgebungsvariablen lassen sich über das .env file konfigurieren und verändern. Für die Portweiterleitung müssen lediglich die Ports „KLAROS_PORT“ und „DATABASE_PORT“ im .env file geändert werden.

Beim Erstellen des Images können alle Werte in Tabelle 1 vor dem ersten Serverstart geändert werden. Nach dem ersten Start des Servers können die Werte in Tabelle 2 beliebig oft geändert werden. Alle Änderungen erfordern einen Neustart.

Bei Bedarf kann die Umgebungsvariable JAVA_OPTS in das Dockerfile von klaros hinzugefügt werden, um zusätzliche Einstellungen für den Tomcat-Server vorzunehmen.

Beispiel zum Einstellen der Zeitzone über JAVA_OPTS
Bitte ändern Sie bei Bedarf die Zeitzone im .env file und nicht im Dockerfile.

ENV JAVA_OPTS -Duser.timezone=Europe/Berlin

Konfiguration über das .env file

Das .env file befindet sich im selben Verzeichnis wie das docker-compose.yml file und kann mit Ihrem bevorzugten Textbearbeitungsprogramm geöffnet werden.

Beispiel
vi .env

4. Installation

4.1. Repository – klonen

Sobald Sie sich im gewünschten Verzeichnis befinden, können Sie das Dockerfile herunterladen
git init
git clone https://github.com/klaros-testmanagement/klaros-docker
Mit ls können Sie überprüfen, ob das Verzeichnis korrekt erstellt wurde
ls
Ausgabe: klaros-docker

4.2. Image erstellen

Das Image wird benötigt, um den Klaros-Container zu erstellen und den Server zu starten.

PostgreSQL
cd ~/klaros-docker/PostgreSQL
docker-compose build
MySQL
cd ~/klaros-docker/MySQL
docker-compose build
MariaDB
cd ~/klaros-docker/MariaDB
docker-compose build
Microsoft SQL Server
cd ~/klaros-docker/Microsoft\ SQL\ Server/
docker-compose build

5. Benutzung

5.1. Eine Instanz starten

Beim Start werden automatisch zwei Docker-Container für den Server und die Datenbank angelegt. Die Konfigurationen sind im .env file zu finden.

Server starten
docker-compose up
Details
Um den Container im detached mode auszuführen, muss der Parameter -d hinzugefügt werden
docker-compose up -d

Weitere Informationen zu den docker-compose up Parametern finden Sie in der offiziellen Docker Compose Dokumentation.

Nach dem Serverstart erscheint am Ende die Meldung „Serverstart in x ms“. Sie können jetzt mit jedem Browser Ihre IP-Adresse und Ihren Port eingeben, um auf die Klaros Webseite zuzugreifen.

Beispiel: 127.0.0.1:18080
Benutzername: admin
Passwort: admin

5.2. Weitere Instanzen starten

Zu Test- oder Validierungszwecken kann es wünschenswert sein, mehrere Instanzen von Klaros gleichzeitig in derselben Docker-Umgebung auszuführen. In diesem Abschnitt werden die dafür nötigen Konfigurationsänderungen beschrieben.

Eine weitere Klaros-Instanz kann dazu verwendet werden, eine neue Klaros-Version auszuprobieren oder um ein bestehendes Backup zu testen.

Bevor die Konfigurationsänderungen vorgenommen werden, muss jede Instanz in einem separaten Verzeichnis gespeichert werden.

PostgreSQL
Kopieren Sie das Verzeichnis und geben Sie ein entsprechendes Zielverzeichnis an
cp -r PostgreSQL/ PostgreSQL2
Öffnen Sie das .env file mit Ihrem bevorzugten Texteditor. Unter Windows kann Notepad++ als Texteditor verwendet werden
cd ~/klaros-docker/PostgreSQL2
vi .env
MySQL
Kopieren Sie das Verzeichnis und geben Sie ein entsprechendes Zielverzeichnis an
cp -r MySQL/ MySQL2
Öffnen Sie das .env file mit Ihrem bevorzugten Texteditor. Unter Windows kann Notepad++ als Texteditor verwendet werden
cd ~/klaros-docker/MySQL2
vi .env
MariaDB
Kopieren Sie das Verzeichnis und geben Sie ein entsprechendes Zielverzeichnis an
cp -r MariaDB/ MariaDB2
Öffnen Sie das .env file mit Ihrem bevorzugten Texteditor. Unter Windows kann Notepad++ als Texteditor verwendet werden
cd ~/klaros-docker/MariaDB2
vi .env
Microsoft SQL Server
Copy the directory and specify an appropriate target directory
cp -r Microsoft\ SQL\ Server/ Microsoft\ SQL\ Server2
Open the .env file with your preferred text editor. Under Windows Notepad++ can be used as a text editor
cd Microsoft\ SQL\ Server2/
vi .env

Um eine zweite Instanz unabhängig von der ersten Instanz auszuführen, müssen sich die Instanzen im Namen, im Port und im Volume unterscheiden.

Table 3. Werte, die pro Instanz geändert werden müssen
Aktueller Wert Neuer Wert Beschreibung

KLAROS_PORT=18080

KLAROS_PORT=18081

Öffentlicher Port, um später auf die Webseite zuzugreifen

DATABASE_PORT=10001

DATABASE_PORT=10002

Öffentlicher Port, um von außen auf die Datenbank zuzugreifen

DATABASE_CONTAINER_NAME=klaros_db

DATABASE_CONTAINER_NAME=klaros_db2

Containername für die Datenbank

KLAROS_CONTAINER_NAME=klaros_postgresql

KLAROS_CONTAINER_NAME=klaros_postgresql2

Containername für die Klaros-Testmanagement Anwendung

VOLUME_NAME=klaros-data

VOLUME_NAME=klaros-data2

Volumename. Hier werden die Daten gespeichert

Die zweite Instanz wird dann wie die erste Instanz gestartet
docker-compose up

5.3. Instanz herunterfahren

Wenn der Container im Vordergrund gestartet wurde, können Sie den Server mit der Tastenkombination STRG + C herunterfahren.

Alternativ lässt sich der Server auch über docker-compose stop herunterfahren.

6. Erstellen und Wiederherstellen eines Backups

Hierbei wird zwischen einem SQL-Backup (Dump) und Volume-Backup unterschieden. Mithilfe eines SQL-Backups kann die Datenbank im laufenden Betrieb gesichert werden. Bei einem Volume-Backup muss der Server zuvor heruntergefahren werden. Ein SQL-Backup erfordert ebenfalls einen geringeren Speicherbedarf als ein Volume-Backup, es fehlen jedoch wichtige Daten, wie z.B. Konfigurations- und Protokolldateien. Beide Sicherungsstrategien haben ihre Vorteile, daher ist es wünschenswert, sie zu kombinieren.

Einzelne SQL-Backups finden sich unter dem Namen „backup_sql_klaros<Datum>.tar.gz“.

Volume oder Volume- und SQL-Backups sind mit dem Namen „backup_klaros<Datum>.tar.gz“ versehen. Falls Sie mehrere Backups am Tag erstellen, wird empfohlen beim Erstellen der Backups noch eine Uhrzeit (Stunden, Minuten und Sekunden) mitzugeben. Dazu fügen Sie in date %H(Stunde), %M(Minute) und %S(Sekunde) hinzu.

ℹ️
Tritt beim Erstellen eines Backups ein Fehler auf, dann geben die Logfiles nachvollziehbare Vorgänge zu den Fehlermeldungen.
Windows-Beispiel
$(date '%y-%m-%d-%Hh-%Mm-%Ss')
Linux-Beispiel
$(date '+%y-%m-%d-%H:%M:%S')
Details

Damit würde das Backup den folgenden Namen tragen:

Windows: backup_klaros19-10-28-11h-34m-33s.tar.gz
Linux: backup_klaros19-10-28-11:34:33.tar.gz

Um den Backup-Pfad zu wechseln, kann die Variable „BACKUP_DIR“ angepasst werden.

Windows-Beispiel
BACKUP_DIR="~/klaros-docker/Path/backup"
Linux-Beispiel
BACKUP_DIR=~/klaros-docker/Path/backup

6.1. SQL-Backup erstellen

Ein SQL-Backup kann nur im laufenden Betrieb erstellt werden.
Windows
PostgreSQL
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
mkdir -p ${BACKUP_DIR}
docker exec -t klaros_db bash -c "pg_dump -c -U \${DATABASE_USER} -d \${DATABASE_NAME}" > ${BACKUP_DIR}/backup${DATE}.sql
tar cvzf ${BACKUP_DIR}/backup_sql_klaros${DATE}.tar.gz -C ${BACKUP_DIR} backup${DATE}.sql
rm ${BACKUP_DIR}/backup${DATE}.sql
MySQL/MariaDB
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
mkdir -p ${BACKUP_DIR}
docker exec klaros_db bash -c "mysqldump -u \${DATABASE_USER} --password=\${DATABASE_PASSWORD} \${DATABASE_NAME} --single-transaction --routines --triggers" > ${BACKUP_DIR}/backup${DATE}.sql
tar cvzf ${BACKUP_DIR}/backup_sql_klaros${DATE}.tar.gz -C ${BACKUP_DIR} backup${DATE}.sql
rm ${BACKUP_DIR}/backup${DATE}.sql
Microsoft SQL Server
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
mkdir -p ${BACKUP_DIR}
docker exec -t klaros_db bash -c "./opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P \$DATABASE_PASSWORD -Q \"BACKUP DATABASE [klaros] TO DISK = N'/data/mssql-data/backup.bak' WITH FORMAT\"" && docker cp klaros_db:/data/mssql-data/backup.bak ${BACKUP_DIR}/backup${DATE}.bak
tar cvzf ${BACKUP_DIR}/backup_sql_klaros${DATE}.tar.gz -C ${BACKUP_DIR} backup${DATE}.bak
rm ${BACKUP_DIR}/backup${DATE}.bak
Linux
PostgreSQL
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
mkdir -p ${BACKUP_DIR}
sudo docker exec -t klaros_db bash -c "pg_dump -c -U \${DATABASE_USER} -d \${DATABASE_NAME}" > ${BACKUP_DIR}/backup${DATE}.sql
tar cvzf ${BACKUP_DIR}/backup_sql_klaros${DATE}.tar.gz -C ${BACKUP_DIR} backup${DATE}.sql
rm ${BACKUP_DIR}/backup${DATE}.sql
MySQL/MariaDB
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
mkdir -p ${BACKUP_DIR}
sudo docker exec klaros_db bash -c "mysqldump -u \${DATABASE_USER} --password=\${DATABASE_PASSWORD} \${DATABASE_NAME} --single-transaction --routines --triggers" > ${BACKUP_DIR}/backup${DATE}.sql
tar cvzf ${BACKUP_DIR}/backup_sql_klaros${DATE}.tar.gz -C ${BACKUP_DIR} backup${DATE}.sql
rm ${BACKUP_DIR}/backup${DATE}.sql
Microsoft SQL Server
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
mkdir -p ${BACKUP_DIR}
sudo docker exec -t klaros_db bash -c "./opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P \$DATABASE_PASSWORD -Q \"BACKUP DATABASE [klaros] TO DISK = N'/data/mssql-data/backup.bak' WITH FORMAT\"" && sudo docker cp klaros_db:/data/mssql-data/backup.bak ${BACKUP_DIR}/backup${DATE}.bak
sudo tar cvzf ${BACKUP_DIR}/backup_sql_klaros${DATE}.tar.gz -C ${BACKUP_DIR} backup${DATE}.bak
rm -f ${BACKUP_DIR}/backup${DATE}.bak

6.2. Volume-Backup erstellen

Für ein Volume Backup muss der Server heruntergefahren werden.
Windows
PostgreSQL
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/PostgreSQL
mkdir -p ${BACKUP_DIR}
docker-compose stop
docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine /bin/sh -c "tar cvzf /backup/${BACKUP_NAME} /data/klaros-home /data/catalina-base/logs /data/postgres-data"
cd -
MySQL
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/MySQL
mkdir -p ${BACKUP_DIR}
docker-compose stop
docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "tar cvzf /backup/${BACKUP_NAME} /data/klaros-home /data/catalina-base/logs /data/mysql-data"
cd -
MariaDB
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/MariaDB
mkdir -p ${BACKUP_DIR}
docker-compose stop
docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "tar cvzf /backup/${BACKUP_NAME} /data/klaros-home /data/catalina-base/logs /data/mariadb-data"
cd -
Microsoft SQL Server
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/Microsoft\ SQL\ Server/
mkdir -p ${BACKUP_DIR}
docker-compose stop
docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "tar cvzf /backup/${BACKUP_NAME} /data/klaros-home /data/catalina-base/logs /data/mssql-data"
cd -
Linux
PostgreSQL
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/PostgreSQL
mkdir -p ${BACKUP_DIR}
sudo docker-compose stop
sudo docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "tar cvzf /backup/${BACKUP_NAME} /data/klaros-home /data/catalina-base/logs /data/postgres-data"
cd -
MySQL
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/MySQL
mkdir -p ${BACKUP_DIR}
sudo docker-compose stop
sudo docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "tar cvzf /backup/${BACKUP_NAME} /data/klaros-home /data/catalina-base/logs /data/mysql-data"
cd -
MariaDB
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/MariaDB
mkdir -p ${BACKUP_DIR}
sudo docker-compose stop
sudo docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "tar cvzf /backup/${BACKUP_NAME} /data/klaros-home /data/catalina-base/logs /data/mariadb-data"
cd -
Microsoft SQL Server
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/Microsoft\ SQL\ Server/
mkdir -p ${BACKUP_DIR}
sudo docker-compose stop
sudo docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "tar cvzf /backup/${BACKUP_NAME} /data/klaros-home /data/catalina-base/logs /data/mssql-data"
cd -

6.3. Volume- und SQL-Backup erstellen

Als erstes muss im laufendem Betrieb ein SQL-Backup erstellt werden. Danach wird der Server heruntergefahren, um das Volume-Backup auszuführen.

Windows
PostgreSQL
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/PostgreSQL
mkdir -p ${BACKUP_DIR}
docker exec -t klaros_db bash -c "pg_dump -c -U \${DATABASE_USER} -d \${DATABASE_NAME}" > ${BACKUP_DIR}/backup${DATE}.sql
docker-compose stop
docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "tar cvzf /backup/${BACKUP_NAME} /data/klaros-home /data/catalina-base/logs /data/postgres-data -C /backup backup${DATE}.sql"
rm ${BACKUP_DIR}/backup${DATE}.sql
cd -
MySQL
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/MySQL
mkdir -p ${BACKUP_DIR}
docker exec klaros_db bash -c "mysqldump -u \${DATABASE_USER} --password=\${DATABASE_PASSWORD} \${DATABASE_NAME} --single-transaction --routines --triggers" > ${BACKUP_DIR}/backup${DATE}.sql
docker-compose stop
docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "tar cvzf /backup/${BACKUP_NAME} /data/klaros-home /data/catalina-base/logs /data/mysql-data -C /backup backup${DATE}.sql"
rm ${BACKUP_DIR}/backup${DATE}.sql
cd -
MariaDB
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/MariaDB
mkdir -p ${BACKUP_DIR}
docker exec klaros_db bash -c "mysqldump -u \${DATABASE_USER} --password=\${DATABASE_PASSWORD} \${DATABASE_NAME} --single-transaction --routines --triggers" > ${BACKUP_DIR}/backup${DATE}.sql
docker-compose stop
docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "tar cvzf /backup/${BACKUP_NAME} /data/klaros-home /data/catalina-base/logs /data/mariadb-data -C /backup backup${DATE}.sql"
rm ${BACKUP_DIR}/backup${DATE}.sql
cd -
Microsoft SQL Server
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/Microsoft\ SQL\ Server/
mkdir -p ${BACKUP_DIR}
docker exec -t klaros_db bash -c "./opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P \$DATABASE_PASSWORD -Q \"BACKUP DATABASE [klaros] TO DISK = N'/data/mssql-data/backup.bak' WITH FORMAT\"" && docker cp klaros_db:/data/mssql-data/backup.bak ${BACKUP_DIR}/backup${DATE}.bak
docker-compose stop
docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "tar cvzf /backup/${BACKUP_NAME} /data/klaros-home /data/catalina-base/logs /data/mssql-data -C /backup backup${DATE}.bak"
rm ${BACKUP_DIR}/backup${DATE}.bak
cd -
Linux
PostgreSQL
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/PostgreSQL
mkdir -p ${BACKUP_DIR}
sudo docker exec -t klaros_db bash -c "pg_dump -c -U \${DATABASE_USER} -d \${DATABASE_NAME}" > ${BACKUP_DIR}/backup${DATE}.sql
sudo docker-compose stop
sudo docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "tar cvzf /backup/${BACKUP_NAME} /data/klaros-home /data/catalina-base/logs /data/postgres-data -C /backup backup${DATE}.sql"
rm ${BACKUP_DIR}/backup${DATE}.sql
cd -
MySQL
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/MySQL
mkdir -p ${BACKUP_DIR}
sudo docker exec klaros_db bash -c "mysqldump -u \${DATABASE_USER} --password=\${DATABASE_PASSWORD} \${DATABASE_NAME} --single-transaction --routines --triggers" > ${BACKUP_DIR}/backup${DATE}.sql
sudo docker-compose stop
sudo docker run --rm --volumes-from klaros_db -v /$BACKUP_DIR:/backup alpine sh -c "tar cvzf /backup/$BACKUP_NAME /data/klaros-home /data/catalina-base/logs /data/mysql-data -C /backup backup$DATE.sql"
rm ${BACKUP_DIR}/backup${DATE}.sql
cd -
MariaDB
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/MariaDB
mkdir -p ${BACKUP_DIR}
sudo docker exec klaros_db bash -c "mysqldump -u \${DATABASE_USER} --password=\${DATABASE_PASSWORD} \${DATABASE_NAME} --single-transaction --routines --triggers" > ${BACKUP_DIR}/backup${DATE}.sql
sudo docker-compose stop
sudo docker run --rm --volumes-from klaros_db -v /$BACKUP_DIR:/backup alpine sh -c "tar cvzf /backup/$BACKUP_NAME /data/klaros-home /data/catalina-base/logs /data/mariadb-data -C /backup backup$DATE.sql"
rm ${BACKUP_DIR}/backup${DATE}.sql
cd -
Microsoft SQL Server
DATE=$(date '+%y-%m-%d')
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/Microsoft\ SQL\ Server/
mkdir -p ${BACKUP_DIR}
sudo docker exec -t klaros_db bash -c "./opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P \$DATABASE_PASSWORD -Q \"BACKUP DATABASE [klaros] TO DISK = N'/data/mssql-data/backup.bak' WITH FORMAT\"" && sudo docker cp klaros_db:/data/mssql-data/backup.bak ${BACKUP_DIR}/backup${DATE}.bak
sudo docker-compose stop
sudo docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "tar cvzf /backup/${BACKUP_NAME} /data/klaros-home /data/catalina-base/logs /data/mssql-data -C /backup backup${DATE}.bak"
rm -f ${BACKUP_DIR}/backup${DATE}.bak
cd -

6.4. SQL-Backup wiederherstellen

Das Wiederherstellen über eine .sql-Datei funktioniert auch mit dem Sicherungsarchiv „backup_klaros<Datum>.tar.gz“, wenn eine „backup<Datum>.sql“ Datei vorhanden ist. Beachten Sie, dass der Datenbank-Container weiterhin ausgeführt sein muss, während der Server heruntergefahren wird. Danach wird der Container über docker-compose stop angehalten.

ℹ️
Beachten Sie, das Datum der jeweiligen Backups anzupassen.
Windows
PostgreSQL
DATE=19-11-28
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_sql_klaros${DATE}.tar.gz
cd ~/klaros-docker/PostgreSQL
docker stop klaros_postgresql
tar xvzf ${BACKUP_DIR}/${BACKUP_NAME} backup${DATE}.sql
cat backup${DATE}.sql | docker exec -i klaros_db bash -c "psql -U \${DATABASE_USER} -d \${DATABASE_NAME}"
rm backup${DATE}.sql
docker-compose stop
cd -
MySQL
DATE=19-11-28
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_sql_klaros${DATE}.tar.gz
cd ~/klaros-docker/MySQL
docker stop klaros_mysql
tar xvzf ${BACKUP_DIR}/${BACKUP_NAME} backup${DATE}.sql
cat backup${DATE}.sql | docker exec -i klaros_db bash -c "mysql -u \${DATABASE_USER} --password=\${DATABASE_PASSWORD} \${DATABASE_NAME}"
rm backup${DATE}.sql
docker-compose stop
cd -
MariaDB
DATE=19-11-28
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_sql_klaros${DATE}.tar.gz
cd ~/klaros-docker/MariaDB
docker stop klaros_mariadb
tar xvzf ${BACKUP_DIR}/${BACKUP_NAME} backup${DATE}.sql
cat backup${DATE}.sql | docker exec -i klaros_db bash -c "mysql -u \${DATABASE_USER} --password=\${DATABASE_PASSWORD} \${DATABASE_NAME}"
rm backup${DATE}.sql
docker-compose stop
cd -
Microsoft SQL Server
DATE=19-11-28
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_sql_klaros${DATE}.tar.gz
cd ~/klaros-docker/Microsoft\ SQL\ Server/
docker stop klaros_mssql2017
tar xvzf ${BACKUP_DIR}/${BACKUP_NAME} backup${DATE}.bak
docker cp backup${DATE}.bak klaros_db:/data/mssql-data/backup.bak
docker exec -i klaros_db bash -c "./opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P \$DATABASE_PASSWORD -Q \"RESTORE DATABASE [klaros] FROM DISK = N'/data/mssql-data/backup.bak' WITH FILE = 1, REPLACE, STATS = 5\""
rm backup${DATE}.bak
docker-compose stop
cd -
Linux
PostgreSQL
DATE=19-11-28
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_sql_klaros${DATE}.tar.gz
cd ~/klaros-docker/PostgreSQL
sudo docker stop klaros_postgresql
tar xvzf ${BACKUP_DIR}/${BACKUP_NAME} backup${DATE}.sql
cat backup${DATE}.sql | sudo docker exec -i klaros_db bash -c "psql -U \${DATABASE_USER} -d \${DATABASE_NAME}"
rm backup${DATE}.sql
sudo docker-compose stop
cd -
MySQL
DATE=19-11-28
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_sql_klaros${DATE}.tar.gz
cd ~/klaros-docker/MySQL
sudo docker stop klaros_mysql
tar xvzf ${BACKUP_DIR}/${BACKUP_NAME} backup${DATE}.sql
cat backup${DATE}.sql | sudo docker exec -i klaros_db bash -c "mysql -u \${DATABASE_USER} --password=\${DATABASE_PASSWORD} \${DATABASE_NAME}"
rm backup${DATE}.sql
sudo docker-compose stop
cd -
MariaDB
DATE=19-11-28
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_sql_klaros${DATE}.tar.gz
cd ~/klaros-docker/MariaDB
sudo docker stop klaros_mariadb
tar xvzf ${BACKUP_DIR}/${BACKUP_NAME} backup${DATE}.sql
cat backup${DATE}.sql | sudo docker exec -i klaros_db bash -c "mysql -u \${DATABASE_USER} --password=\${DATABASE_PASSWORD} \${DATABASE_NAME}"
rm backup${DATE}.sql
sudo docker-compose stop
cd -
Microsoft SQL Server
DATE=19-11-28
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_sql_klaros${DATE}.tar.gz
cd ~/klaros-docker/Microsoft\ SQL\ Server/
sudo docker stop klaros_mssql2017
sudo tar xvzf ${BACKUP_DIR}/${BACKUP_NAME} backup${DATE}.bak
sudo docker cp backup${DATE}.bak klaros_db:/data/mssql-data/backup.bak
sudo docker exec -i klaros_db bash -c "./opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P \$DATABASE_PASSWORD -Q \"RESTORE DATABASE [klaros] FROM DISK = N'/data/mssql-data/backup.bak' WITH FILE = 1, REPLACE, STATS = 5\""
rm -f backup${DATE}.bak
sudo docker-compose stop
cd -

6.5. Volume-Backup wiederherstellen

Vor der Wiederherstellung müssen die Container heruntergefahren werden.
Windows
PostgreSQL
DATE=19-11-28
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/PostgreSQL
docker-compose stop
docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "cd /data && tar xvzf /backup/${BACKUP_NAME} --strip 1 --exclude=backup${DATE}.sql"
cd -
MySQL
DATE=19-11-28
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/MySQL
docker-compose stop
docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "cd /data && tar xvzf /backup/${BACKUP_NAME} --strip 1 --exclude=backup${DATE}.sql"
cd -
MariaDB
DATE=19-11-28
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/MariaDB
docker-compose stop
docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "cd /data && tar xvzf /backup/${BACKUP_NAME} --strip 1 --exclude=backup${DATE}.sql"
cd -
Microsoft SQL Server
DATE=19-11-28
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/Microsoft\ SQL\ Server/
docker-compose stop
docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "cd /data && tar xvzf /backup/${BACKUP_NAME} --strip 1 --exclude=backup${DATE}.bak"
cd -
Linux
PostgreSQL
DATE=19-11-28
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/PostgreSQL
sudo docker-compose stop
sudo docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "cd /data && tar xvzf /backup/${BACKUP_NAME} --strip 1 --exclude=backup${DATE}.sql"
cd -
MySQL
DATE=19-11-28
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/MySQL
sudo docker-compose stop
sudo docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "cd /data && tar xvzf /backup/${BACKUP_NAME} --strip 1 --exclude=backup${DATE}.sql"
cd -
MariaDB
DATE=19-11-28
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/MariaDB
sudo docker-compose stop
sudo docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "cd /data && tar xvzf /backup/${BACKUP_NAME} --strip 1 --exclude=backup${DATE}.sql"
cd -
Microsoft SQL Server
DATE=19-11-28
BACKUP_DIR=~/klaros-docker/backup
BACKUP_NAME=backup_klaros${DATE}.tar.gz
cd ~/klaros-docker/Microsoft\ SQL\ Server/
sudo docker-compose stop
sudo docker run --rm --volumes-from klaros_db -v /${BACKUP_DIR}:/backup alpine sh -c "cd /data && tar xvzf /backup/${BACKUP_NAME} --strip 1 --exclude=backup${DATE}.bak"
cd -

7. Wie und wo finde ich die Logfiles?

Für die Fehlerbehebung können Logfiles erforderlich sein. Um auf Logfiles zuzugreifen, kann eine Shell direkt im Docker-Container geöffnet werden oder sie können aus dem Backup entnommen werden.

Wichtige Logs finden sich unter:

/data/catalina-base/logs
/data/mysql-data ← Zusätzlich für MySQL

7.1. Logs über die Docker-Shell anzeigen

Öffnen Sie im Klaros-Container eine Shell mit docker exec, um Zugriff auf die Logs zu bekommen.

ℹ️
Bitte beachten Sie, dass der Server beim Zugriff über die Shell gestartet sein muss und nicht heruntergefahren werden darf.
Die Logfiles können dann mit more gelesen werden
docker exec -it klaros_db /bin/sh
more /data/catalina-base/logs/catalina.2019-12-09.log

7.2. Logs aus dem Backupverzeichnis anzeigen

Windows

Windows-Nutzer können das Archivprogramm WinRAR verwenden, um .tar.gz Archive zu entpacken.

Anschließend lassen sich die Klaros-Testmanagement Logs im „logs“ Ordner von catalina-base und die MySQL Logs im Ordner „mysql-data“ anzeigen.

Linux
Um die Logs aus dem Backup auszulesen, lässt sich mit tar das Archive entpacken
sudo tar -xzf backup_klaros19-10-28.tar.gz

Anschließend lassen sich die Klaros-Testmanagement Logs im „logs“ Ordner von catalina-base und die MySQL Logs im Ordner „mysql-data“ anzeigen.

8. Update

Nach einem Update von Klaros-Testmanagement, ist das Aufspielen der vorherigen Version nicht mehr möglich. Achte ebenfalls darauf das Image nach dem Update zu aktualisieren, da sonst weiterhin die vorherige Version verwendet wird.

8.1. Update über master branch

Klaros kann mit git pull auf die neueste Version aktualisiert werden
git pull origin master

8.2. Update über tags

Um ein Update von einer älteren auf eine neuere Version durchzuführen, wird als erstes nach neuen Updates im GitHub-Repository gesucht. Aktuelle Versionen lassen sich über git tag anzeigen. Danach kann ein lokales branch „update“ mit der gewünschten Version erstellt und gemerged werden. Alternativ kann man seinen lokalen branch auch direkt mit dem master mergen, anstatt einen zweiten branch zu erstellen.

git checkout master
git pull origin master
git checkout tags/<tag_name> -b update
git checkout klaros
git merge update
git branch -D update

8.3. Image aktualisieren

Nach dem Herunterladen des Updates aus dem GitHub-Repository wird ein neues Image erstellt und alle „dangling“ Images werden entfernt
docker-compose down
docker-compose build
docker image prune
Nachdem das neue Image erstellt wurde, wird der Container wie gewohnt gestartet
docker-compose up

9. Vorherige Version nutzen

Wenn bereits eine neuere Version verwendet wird, dann kann eine ältere Version nur durch das Erstellen einer weiteren Instanz oder durch eine Neuinstallation verwendet werden.

Aktuell unterstützte Versionen finden Sie unter GitHub releases.

Nachdem das Repository geklont wurde, können die Tags mit git tag aufgelistet werden und mit git checkout tags/<tag_name> -b <neuer_branch> wird ein neuer branch erstellt und ausgecheckt.

git tag
git checkout tags/<tag_name> -b klaros

10. Deinstallation

Um Klaros-Testmanagement vollständig von Docker zu entfernen, müssen die Container zuerst gestoppt werden, bevor die Container und das Volume entfernt werden kann.

Danach entfernen Sie das Verzeichnis ~/klaros-docker und das Image.

PostgreSQL
docker-compose down --volume
docker rmi klaros-postgresql
docker rmi postgres-klaros_db
rm -rf ~/klaros-docker/
MySQL
docker-compose down --volume
docker rmi klaros-mysql
docker rmi mysql-klaros_db
rm -rf ~/klaros-docker/
MariaDB
docker-compose down --volume
docker rmi klaros-mariadb
docker rmi mariadb-klaros_db
rm -rf ~/klaros-docker/
Microsoft SQL Server
docker-compose down --volume
docker rmi klaros-mssql2017
docker rmi mssql2017-klaros_db
rm -rf ~/klaros-docker/

11. Dokumentation

Informationen zum Einstieg in Klaros-Testmanagement finden Sie in unserem Tutorial und im Benutzerhandbuch. Beide sind nach erfolgreicher Anmeldung auch in der Anwendung selbst verfügbar.

Unsere Installationsdokumentation enthält die Beschreibung der Installation von Klaros-Testmanagement unter Docker für ApacheDerby-, MariaDB-, MSSQL-, MySQL- und PostgreSQL-Datenbanken.

12. FAQ

Eine technische FAQ sowie eine FAQ zu Preisen, Bestellung und Lieferung finden Sie auf unserer Webseite.

13. Lizenz

Klaros-Testmanagement für Docker ist unter den Bedingungen der MIT-Lizenz lizenziert.

Durch die Installation unserer Software über Docker stimmen Sie auch unserer Lizenzvereinbarung für Limited Use Software License Agreement zu.

14. Kontakt

Wir hoffen, dass wir Ihnen mit dieser Beschreibung einen reibungslosen Start ermöglicht haben.

Wenn Sie Fragen, Wünsche oder einfach nur Feedback geben möchten, schreiben Sie uns bitte an support@verit.de oder nutzen Sie unser Forum.

15. Mitmachen

Möchten Sie uns helfen oder Verbesserungsvorschläge machen? Führen Sie diese Schritte aus, um Ihre Änderungen vorzuschlagen.

  • Erstellen Sie ein issue und beschreiben Sie Ihre Idee.

  • Fork des Repositorys

  • Erstelle einen neuen branch (git checkout -b feature/my-idea)

  • Mach deine Änderungen

  • Commite deine Änderungen (git commit -am 'Adding feature')

  • Push deine Änderungen in dein branch (git push origin feature/my-idea)

  • Erstelle ein Pull Request

16. Danksagung