Dockercontainer für Kivitendo und lxcars
Ich habe mich in den letzten Tagen etwas intensiver mit Docker auseinandergesetzt. Entstanden sind zwei Docker Container für den Betrieb von Kivitendo und lxcars.
Kivitendo (www.kivitendo.de) ist eine opensource ERP Lösung für KMUs. Die Lösung kann recht gut an die Bedürfnisse einer KMU angepasst werden. Daneben besitzt Kivitendo eine breite Community im deutschsprachigen Raum. Als Erweiterung zu Kivitendo spezifisch für Garagen und Autohändler bietet sich lxcars an. Da ich mich für die Funktion von lxcars interessiert habe und dazu eine Testinstallation aufstzen wollte habe ich das ganze mit Docker realisiert.
Installation
Die fertigen Container sind in der Docker Registry zu finden:
https://registry.hub.docker.com/u/drnoa/kivitendo-docker/
und für lxcars
https://registry.hub.docker.com/u/drnoa/lxcars-docker/
Um diese zu verwenden, kann ganz einfach der Dockercontainer von der Registry geholt werden:
#!code /bin/bash docker pull drnoa/kivitendo-docker
oder
#!code /bin/bash docker pull drnoa/lxcars-docker
alternativ kann der Docker Container auch vom Dockerfile gebaut werden. Dazu einfach das Dockerfile und die benötigten Config-Vorlagen von Github klonen.
Dockerfile von Github:
https://github.com/drnoa/kivitendo_docker
und für lxcars
https://github.com/drnoa/lxcars_docker
#!code /bin/bash git clone https://github.com/drnoa/kivitendo_docker.git cd kivitendo_docker sudo docker build .
Wenn der Dockercontainer direkt vom Dockerfile gebaut wird besteht der Vorteil, dass die Configfiles und Variablen den eigenen Bedürfnissen angepasst werden können.
Im Dockerfile habe ich folgende Parameter definiert:
ENV postgresversion 9.3 ENV locale de_CH ENV postrespassword docker
So wird es möglich die Postgresversion frei zu wählen, dasselbe gild für das Locale. Bei der Installation werden zudem 2 Postgres Benutzer (docker und kivitendo) erstellt. Für beide Benutzer kann mittels der Variable postgrespassword ein Passwort definiert werden.
Die gesamte Anleitung inkl. aller möglichen zusätzlichen Informationen ist auch auf Github zu finden.
Inbetriebnahme Kititendo
Nach erfolgreichem bau des Containers oder pull von der Registry kann der Container mittels
#!code /bin/bash sudo docker run drnoa/kivitendo-docker
gestartet werden. Vom erstellen Container werden automatisch die Ports 80 (Apache Webserver) und 5432 (Postgres Server) verwendet. Docker wird dabei eine interne IP Adresse zugewiesen. Alle aktuell laufenden Container können mittels
#!code /bin/bash sudo docker ps -a
angezeigt werden. Und die verwendete IP Adresse findet ihr mittels:
#!code /bin/bash sudo docker ps -q | xargs docker inspect | grep IPAddress | cut -d '"' -f 4
Alle laufenden Container stoppen ist mit folgedem Befehl möglich:
#!code /bin/bash sudo docker stop $(sudo docker ps -a -q)
Nach erfolgreichem starten des Containers müssen noch die letzten Schritte der Installation im Browser gemacht werden.
Dazu die Administration öffnen und die Datenbank anlegen. Als DB Benutzer und Passwort kann beide male „docker“ eingegeben werden. Bzw. das Passwort das über die Variable postrespassword definiert wurde. Danach noch die Mandantendatenbank, eine Gruppe und einen Benutzer einrichten.
Nach dem Login mit dem erstellen Benutzer noch die restlichen Installationsschritte durchgehen. Fertig ist die Kivitendo Installation.
Inbetriebnahme lxcars
Die Installation ist Grundsätzlich identisch zur Kivitendo Inbetriebnahme.
#!code /bin/bash sudo docker run drnoa/lxcars-docker
Auch hier müssen die letzten Schritte im Browser erledigt werden. Nebst dem Mandanten, dem Benutzer müssen auch noch eine „Admin“ und eine „Werkstatt“ Gruppe erstellt werden. Die Installationsschritte sind auch auf der Projektseite von lxcars beschrieben.
Upgrade und Persistenz der Datenbank
Damit bei mehrmaligem ausführen des Docker Containers die Datenbank nicht jedes mal neu aufgesetzt wird muss ein persistente Verbindung zur Datenbank hergestellt werden.
Dazu wird ein /var/lib/postgresql in den Container gemountet.
#!code /bin/bash sudo docker run --name postgresql -d \ -v /opt/postgresql/data:/var/lib/postgresql drnoa/kivitendo_docker:latest
Viel Spass bei Kivitendo und lxcars.
kivijan
Hi,
das finde ich ja voll klasse, dass es so eine einfach Möglichkeit der Installation gibt.
Wir hatten schon mal probiert ein debian-Paket zu erstellen.
Die 3.2 von kivitendo ist diese Woche erschienen, s.a. (http://kivitendo.de/nc/information/neuigkeiten/einzelansicht/artikel/kivitendo-release-3-2-0/157.html).
Ist dies in dem Docker schon bedacht? Kann man das automatisieren?
Es sind drei weitere Perl-Module für die 3.2 hinzugekommen.
Danke und bis dahin!
binggu
Hi,
Danke für den Hinweis auf die neue Version von Kivitendo. Ich habe das Dockerimage auf Docker Hub entsprechend aktualisiert.
Um ein Dockerimage zu erstellen bzw in Betrieb zu nehmen gibt es immer 2 Varianten; Neu Builden mittels Dockerfile (das holt dann auch immer gleich die neuesten Sourcen vom Kivitendo Git) oder aber direkt das bestehende Image vom Docker Hub downloaden. Bei der zweiten Variante ist der Nachteil, dass updates jeweils von mir von Hand gemacht werden müssen. Wenn ich neue Versionen sehe mach ich das auch gleich.
Das aktuelle Dockerfile ist auf Github zu finden: https://github.com/drnoa/kivitendo_docker
Zum erstellen eines aktuellen Pakets einfach im selben Verzeichnis
$ docker build .
ausführden.
Maik Wagner
Hallo binggu,
in der Anleitung ist ein kleiner Tippfehler. Bei
#!code /bin/bash
docker pull drnoa/kivitend-docker
fehlt in kivitendo das „o“ am Ende.
Ich habe die Installation mal auf einem gemieteten vServer durchgeführt. Was mir noch nicht ganz klar ist, ist wie die IP-Adresse an den externen Apache 80er Port „weitergereicht“ werden kann. Die interne IP-Adresse lautet wie folgt.
sudo docker ps -q | xargs docker inspect | grep IPAddress | cut -d ‚“‚ -f 4
172.17.0.2
Könntest Du darauf noch etwas eingehen? Wäre nett.
Mir hat es auf dem vServer auch geholfen, den Docker im Hintergrund per & laufen zu lassen. Ansonsten ist das Shellprompt belegt.
Aber an sich, gute Arbeit! Thanks for sharing!
binggu
Hallo Maik
Vielen dank für deine Rückmeldung.
Du kannst den Port vom Apache mittels docker run -d -p 80:5000 drnoa/kivitendo-docker zum Beispiel auf den Port 5000 exposen. So kannst du mittels http://dieIPdeinesContainers:5000 auf deinen Webserver zugreifen.
Den Fehler habe ich korrigiert. Danke für die Rückmeldung.
Matthias
Hallo Daniel,
verwendest Du Kivitendo noch?
Sollte man mit deiner Installationsvariante auch aus dem Netzwerk auf Kivitendo zugreifen können?
Wie ist deine Erfahrung mit lxcars, wie hast Du es eingesetzt?
Danke für dein Sharing.
Viele Grüße
Matthais
binggu
Hallo Matthias
Um ganz erlich zu sein verwende ich beide nicht. Ich habe im 2017 Kivitendo und lxcars für einen Bekannten näher angeschaut. Er wollte seine Garagen-Lösung welche noch auf Access basiert ablösen. Daher habe ich verschieden Open-Source Lösungen näher angeschaut.
Den Kivitendo Dockercontainer habe ich über die letzten Jahr immer mal wieder aktualisiert. Einerseits weil da eine Nachfrage vorhanden ist, andererseits haben wir in der Adventszeit immer eine Open-Source Advents-Challenge bei welcher es darum geht möglichst jeden Tag bei einem Open-Source Projekt einen Beitrag zu leisten.
Der Blog-Post hier ist auch etwas überholt. Die Anleitung auf https://github.com/drnoa/kivitendo_docker ist aktueller.
Zu Kivitendo gibt es eine recht grosse Community. Wies bei Lxcars aussieht weiss ich nicht wirklich. Falls du die Verwendung in Betracht ziehst kann dir da sicher jemand mit Rat und Tat zur Seite stehen.
Liebe Grüsse
Daniel
Matthias
Hallo Daniel,
danke.
Wo finde ich die relative große Community?
http://www.kivitendo,de ist nicht so der Burner.
Was empfiehlst Du?
Viele Grüße
Matthias
binggu
Hier https://forum.kivitendo.de/ scheint doch etwas los zu sein, da gibts jedenfalls fast täglich Einträge.