Entwicklungsumgebung Lando und Contao (Teil 1)
Was ist Lando?
Hat das etwas mit Lando Calrissian von StarWars zu tun? Nein!
Lando ist eine lokale Entwicklungsumgebung auf Basis von Docker mit „einfacher“ Konfiguration via YAML.
Vorteile
- Simulation des Live-Servers mit allen Gegebenheiten z.B. pdflib, elasticsearch etc.
- Standardisierung für Teams unter OSX, Windows, Linux
- Erweiterung mit eigenen Kommandos (tooling)
- Eine Umgebung für alle Projekte
Warum nicht mit Docker compose?
- Abstraktionsebne über docker-compose.yml mit vereinfachter Konfiguration
- Tooling erleichtert Verbindung zum Docker-Container
z.B.lando composer install
stattdocker exec -it "container-id" php /usr/local/bin/composer install
- Im Hintergrund erfolgt Generierung von docker-compose.yml mit URLs, Proxy, Netzwerk etc.
Wo kann ich Lando herunterladen?
- Downloads:
https://github.com/lando/lando/releases - Dokumentation:
https://docs.devwithlando.io
Wie kann ich Lando installieren?
Es gibt für Windows, Mac und Linux entsprechende Pakete zum Download.
Unter Windows einfach die aktuelle "lando-v3.0.0-rc.XX.exe" Datei herunterladen und ausführen - ggf. währenddessen die aktuellste Docker-Version installieren.
Erste Schritte mit Lando
In Lando gibt es einige vorgegebene Rezepte, wie z.B. drupal, joomla, lamp, laravel, lemp, wordpress etc. Vielleicht wird auch irgendwann mal ein Rezept für Contao veröffentlicht. Bisher kommen wir aber auch gut mit dem Rezept "lamp" zurecht.
Um einen "lamp-Server" zu starten, kann man nach der Installation von Lando einfach lando init
in einem beliebigen Verzeichnis rufen und dann lamp
als Rezept auswählen. Das wird zu folgender .lando.yml
führen, die man mittels lando start
in Betrieb nehmen kann.
name: test
recipe: lamp
config:
webroot: .
Anschließend wird man seine erste Lando-Konfiguration über https://test.lndo.site aufrufen können. Wenn der Test erfolgreich war, können die Docker-Container mit lando destroy -y
direkt wieder zerstört werden.
Wie bekomme ich den Contao-Manager zum Laufen?
Wenn man den Contao-Manager ohne bestehende Installation zum Laufen bekommen möchte, dann erstellt man am besten in einem leeren Verzeichnis folgende .lando.yml
.
name: contao-manager
recipe: lamp
services:
appserver:
webroot: contao/web
config:
php: php.ini
#build:
# - ./contao-manager-init.sh /app/contao/web
Da Lando in einem Subprozess das Memory Limit nicht richtig setzt, sollte man diese Einstellung über die folgende php.ini
auf einen festen Wert setzen (siehe (lando#1630). Die Zeitzone kann man dann direkt auch auf Deutschland stellen ;-)
memory_limit = 512M
date.timezone = "Europe/Berlin"
Wenn man den Contao-Manager beim Start von Lando automatisch initialisieren möchte, dann kann man noch folgendes Script in den Ordner legen und die beiden letzten Zeilen in der .lando.yml
auskommentieren. Alternativ muss man das Unterverzeichnis contao/web manuell
erstellen und den heruntergeladenen Manager dort als contao-manager.phar.php
ablegen. Wenn das Unterverzeichnis beim Start von Lando noch nicht vorhanden ist, kann es zu Fehlern kommen!
#!/bin/sh
downloadFileName="contao-manager.phar"
downloadUrl="https://download.contao.org/contao-manager/stable/${downloadFileName}"
installFileName="${downloadFileName}.php"
installPath="/app/web"
if [ "$1" ]; then
installPath=$1
fi
installFilePath="${installPath}/${installFileName}"
if [ ! -d $installPath ]; then
mkdir -p $installPath
fi
if [ ! -f $installFilePath ]; then
curl $downloadUrl -LO
mv $downloadFileName $installFilePath
fi
Achtung:
Bei einer neuen Contao-Installation muss man ein leeres Unterverzeichnis wählen, da der Manager sonst aufgrund der Konfigurationsdateien für Lando meckern wird! Nach der erfolgreichen Contao-Initialisierung über den Manager kann man das Unterverzeichnis contao/
in das Projekt-Verzeichnis verschieben und aus der lando.yml
entfernen. Allerdings ist dann auch ein lando rebuild -y
notwendig!
Tipp:
Wir legen alle Konfigurationsdateien für Lando in ein Unterverzeichnis .lando
, so wissen wir bei jedem Projekt direkt, was im Repository für lando notwendig ist. Hierbei muss dann auch die .lando.yml
angepasst werden, z.B. php: .lando/php/php.ini
Wenn ihr alles richtig angelegt hab, dann sollte der Contao-Manager nach lando start
unter https://contao-manager.lndo.site/contao-manager.phar.php erreichbar sein.
Die Serverkonfiguration stellt ihr auf "Andere ...", wobei der Pfad dann automatisch auf /usr/local/bin/php
gesetzt werden sollte.
Nach der Contao-Installation verwendet ihr folgende Zugangsdaten zur Datenbank:
host: database
username: lamp
password: lamp
database: lamp
siehe auch: https://docs.devwithlando.io/tutorials/lamp.html#connecting-to-your-database
Gibt es Fallstricke?
Ja, es gibt einige kleine Probleme mit Lando, die gelegentlich die Arbeit blockieren:
- Bei Änderung des Windows-Passworts „Shared Drives“ unter Docker Settings zurücksetzen
$HOME
aufC:/Users/…
definieren (abhängig von Gruppenrichtlinien)- Ggf. Probleme bei Updates von Docker-Images
- Viren- bzw. Malwarescanner können Lando blockieren
Wenn sich Lando merkwürdig verhält, hilft auch manchmal ein Rechner- oder Docker-Neustart ;-)
Weitere Optimierungen für Contao notwendig?
Mit diesem Blog-Eintrag wollte ich euch nur einen kleinen Einblick in die Welt von Lando geben. Allerdings haben wir ziemlich schnell festgestellt, dass v.a. unter Windows für Contao noch einige Optimierungen der Lando-Konfiguration notwendig sind, die ich euch demnächst in einem Teil 2 präsentieren werde!
Bei Fragen oder Anregungen nehmt einfach mit mir Kontakt auf.