A techie blog

Docker, IT, Java, Liferay, Web

Eine lokale Liferay Instanz mittels Docker innerhalb 5 Minuten aufsetzen

Wenn man schnell mal eine laufende Liferay Instanz benötigt, um etwas nachzusehen oder zu entwickeln, ist dies Docker sei Dank mittlerweile sehr einfach möglich.

Inhalt

  1. Allgemeines
  2. Vorbedingungen
  3. Sichten der existierenden Images
  4. Das Compose File
  5. Demo #1 – Initialisieren / Starten / Stoppen / Resetten des Containers
  6. Fazit
  7. Quellen

Allgemeines

Hinweis: Dieser Blogartikel beschreibt nur, wie man einen Docker Container auf Basis des offiziellen Liferay Images startet und gibt einige weiterführende Tipps. Dieser Container ist daher in der hier gezeigten Form nicht ohne weitere Anpassungen / Absicherungen (zB Reverse Proxy, Load Balancer,…) als Produktionssystem einzusetzen.

TLDR: Falls nur schnell mal ein Container gestartet werden soll empfehle ich nach lesen der Vorbedingungen zur Demo #1 zu springen.

Vorbedingungen

  • Docker ist installiert
  • Docker-Compose ist installiert (unter Windows und Mac automatisch bei Docker dabei)
  • Verständnis Bedienung der Shell des Betriebssystems
  • Ein grobes Verständnis von Docker, Compose und deren Befehlen ist hilfreich aber nicht zwingend notwendig

Sichten der existierenden Images

Erste Anlaufstelle für Images (=Baupläne für Container) ist hub.docker.com. Wenn wir dort nach Liferay suchen, finden sich gleich einige Images.

Da ich prinzipiell Freund von offiziellen Images bin, sehe ich mir grundsätzlich als erstes eben jene an. Sollte ich mit diesen Images nicht zufrieden sein, sehe ich mir die anderen existenten Images an, und falls für mich nichts interessantes dabei ist, baue ich mir ein auf meine Anforderungen zugeschnittenes Image.

Wenn wir uns das “liferay/portal” Image ansehen, dann ist dies das offizielle Image und auch sauber dokumentiert. Außerdem sehen wir, dass es einige Features bietet

Ich werde nicht weiter auf andere Images eingehen, da ich der Meinung bin, dass das offizielle Image für die meisten Anwendungsfälle sehr gut geeignet ist, bzw. es so wandelbar ist, dass man auf jeden Fall darauf aufbauen sollte.

Das Compose File

Docker-Compose ist ein Tool um (mehrere) Docker Container in einem File zu definieren. Man kann die Konfiguration in YAML Format ablegen und danach einfach mit einem Kommando ebendiesen Container erzeugen und starten.

Compose zu verwenden ist folgender Prozess:

  1. Ein gutes Docker-Image auf hub.docker.com finden oder selbst ein ein Image mittels Dockerfile erzeugen.
  2. Alle benötigten Teil-Services im docker-compose.yml file definieren, so dass diese gemeinsam über einen einzigen Befehl gemeinsam gestartet werden können.
  3. Mit docker-compose up das Service (und alle definierten Container) starten.

Ein simples Compose File sieht wie folgt aus (Hinweis: die Einrückungen müssen exakt eingehalten werden):

version: '3'
services:
liferay:
image: liferay/portal:7.1.2-ga3
ports:
- "8080:8080"

Das Portmapping (ports:) wird benötigt, um vom Hostsystem aus über http://127.0.0.1:8080/ auf das im Container laufende Liferay zugreifen zu können. Ist Port 8080 am Hostsystem belegt, kann man den Außenport (der erste) einfach auf etwas anderes ändern.

Demo #1 – Initialisieren / Starten / Stoppen / Resetten des Containers

Falls das Compose File nicht mit dem vorhergehenden Abschnitt erstellt wurde, sollte es von Bitbucket heruntergeladen (links im Menü unter Downloads) oder geclont (falls Git installiert ist) werden.

Hinweis: Da der Container keinen expliziten Namen gesetzt hat, wird der Verzeichnisname als 1. Teilphrase herangezogen. Daher macht es Sinn, die Dateien in ein sinnvoll benanntes Verzeichnis (zB: liferay-docker-demo) abzulegen oder einen Namen zu definieren.

Hinweis: Für MAC muss man unbedingt den maximalen Arbeitsspeicher von 2 GB auf zumindest 5-6 GB erhöhen, da ansonsten das System bereits beim Starten Probleme hat.

Den Container initialisieren / starten

  1. Ein Terminal in dem Verzeichnis des Projektes / Compose File öffnen
  2. Um den Server zu starten, folgendes Kommando ausführen (das Wort sudo wird nur für Linux Systeme benötigt und kann auf Windows und Mac ersatzlos weggelassen werden)
    • sudo docker-compose up -d
  3. Warten bis Liferay gestartet ist, das braucht etwas Zeit 😉
  4. Einen Browser öffnen und auf http://127.0.0.1:8080/ navigieren
  5. Mit test@liferay.com / test anmelden und Liferay nutzen

Die Logfiles ansehen

  1. Ein Terminal in dem Verzeichnis des Projektes / Compose File öffnen
  2. Um die Logfiles anzusehen, folgendes Kommando ausführen (das Wort sudo wird nur für Linux Systeme benötigt und kann auf Windows und Mac ersatzlos weggelassen werden)
    • sudo docker logs -f liferaydockerdemo_liferay_1
  3. Um die Logfile Einsicht zu beenden drücken Sie Ctrl + c (das -f im vorhergehenden Befehl bedeutet, dass endlos die neuesten Logeinträge angezeigt werden)

Container stoppen

  1. Ein Terminal in dem Verzeichnis des Projektes / Compose File öffnen
  2. Um den Container zu stoppen, folgendes Kommando ausführen (das Wort sudo wird nur für Linux Systeme benötigt und kann auf Windows und Mac ersatzlos weggelassen werden)
    • sudo docker-compose stop
  3. Der Liferay Container stoppt jetzt, die Daten bleiben erhalten

Den Container verwerfen

  1. Ein Terminal in dem Verzeichnis des Projektes / Compose File öffnen
  2. Um den Container zu verwerfen, folgendes Kommando ausführen (das Wort sudo wird nur für Linux Systeme benötigt und kann auf Windows und Mac ersatzlos weggelassen werden)
    • sudo docker-compose down
  3. Der Liferay Container wird nun entfernt alle nicht persistierten Daten werden verworfen

Fazit

Wir haben mit dem offiziellen Liferay Image sehr rasch und einfach eine lauffähige Liferay Instanz gestartet, ohne uns großartig um Konfigurationen etc. kümmern zu müssen.

In einem nachfolgenden Blogpost werde ich aufzeigen, wie flexibel das Image ist, und weshalb ich der Meinung bin, dass man auf diesem aufsetzen sollte.

Quellen

https://bitbucket.org/liferaysamples/liferay-docker-demo/

http://docs.docker.com/

https://docs.docker.com/compose/

https://www.liferay.com/

https://hub.docker.com/r/liferay/portal