- 1. Einführung
- 2. Voraussetzungen
- 3. Docker-Umgebungsvariablen konfigurieren
- 4. Installation
- 5. Benutzung
- 6. Erstellen und Wiederherstellen eines Backups
- 7. Wie und wo finde ich die Logfiles?
- 8. Update
- 9. Vorherige Version nutzen
- 10. Deinstallation
- 11. Dokumentation
- 12. FAQ
- 13. Lizenz
- 14. Kontakt
- 15. Mitmachen
- 16. Danksagung
❗
|
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.
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.
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.
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.
sudo apt-get update sudo apt-get install git
sudo yum check-update sudo yum install git-core
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.
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 |
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 |
Das .env file befindet sich im selben Verzeichnis wie das docker-compose.yml file und kann mit Ihrem bevorzugten Textbearbeitungsprogramm geöffnet werden.
vi .env
git init git clone https://github.com/klaros-testmanagement/klaros-docker
ls
können Sie überprüfen, ob das Verzeichnis korrekt erstellt wurdels Ausgabe: klaros-docker
Das Image wird benötigt, um den Klaros-Container zu erstellen und den Server zu starten.
cd ~/klaros-docker/PostgreSQL docker-compose build
cd ~/klaros-docker/MySQL docker-compose build
cd ~/klaros-docker/MariaDB docker-compose build
cd ~/klaros-docker/Microsoft\ SQL\ Server/ docker-compose build
Beim Start werden automatisch zwei Docker-Container für den Server und die Datenbank angelegt. Die Konfigurationen sind im .env file zu finden.
docker-compose up
Details
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.
Benutzername: admin Passwort: admin
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
cp -r PostgreSQL/ PostgreSQL2
cd ~/klaros-docker/PostgreSQL2 vi .env
MySQL
cp -r MySQL/ MySQL2
cd ~/klaros-docker/MySQL2 vi .env
MariaDB
cp -r MariaDB/ MariaDB2
cd ~/klaros-docker/MariaDB2 vi .env
Microsoft SQL Server
cp -r Microsoft\ SQL\ Server/ Microsoft\ SQL\ Server2
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.
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 |
docker-compose up
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.
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. |
$(date '%y-%m-%d-%Hh-%Mm-%Ss')
$(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.
BACKUP_DIR="~/klaros-docker/Path/backup"
BACKUP_DIR=~/klaros-docker/Path/backup
❗
|
Ein SQL-Backup kann nur im laufenden Betrieb erstellt werden. |
Windows
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
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
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
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
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
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
❗
|
Für ein Volume Backup muss der Server heruntergefahren werden. |
Windows
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 -
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 -
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 -
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
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 -
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 -
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 -
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 -
Als erstes muss im laufendem Betrieb ein SQL-Backup erstellt werden. Danach wird der Server heruntergefahren, um das Volume-Backup auszuführen.
Windows
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 -
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 -
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 -
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
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 -
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 -
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 -
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 -
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
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 -
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 -
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 -
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
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 -
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 -
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 -
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 -
❗
|
Vor der Wiederherstellung müssen die Container heruntergefahren werden. |
Windows
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 -
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 -
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 -
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
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 -
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 -
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 -
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 -
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
Ö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. |
more
gelesen werdendocker exec -it klaros_db /bin/sh more /data/catalina-base/logs/catalina.2019-12-09.log
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
tar
das Archive entpackensudo 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.
❗
|
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. |
git pull
auf die neueste Version aktualisiert werdengit pull origin master
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
docker-compose down docker-compose build docker image prune
docker-compose up
❗
|
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
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.
docker-compose down --volume docker rmi klaros-postgresql docker rmi postgres-klaros_db rm -rf ~/klaros-docker/
docker-compose down --volume docker rmi klaros-mysql docker rmi mysql-klaros_db rm -rf ~/klaros-docker/
docker-compose down --volume docker rmi klaros-mariadb docker rmi mariadb-klaros_db rm -rf ~/klaros-docker/
docker-compose down --volume docker rmi klaros-mssql2017 docker rmi mssql2017-klaros_db rm -rf ~/klaros-docker/
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.
Eine technische FAQ sowie eine FAQ zu Preisen, Bestellung und Lieferung finden Sie auf unserer Webseite.
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.
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 [email protected] oder nutzen Sie unser Forum.
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
-
André Raabe für das Bereitstellen der Apache Derby und Microsoft SQL Server Version
-
https://github.com/x3nb63 für das Hinzufügen der DATABASE_HOST Variablen