Die Kombination zwischen DDEV und dem Sulu Symfony Content Management System ist optimal, damit man schnell neue Projekte starten kann. Zu diesem Zweck hat Never Code Alone das Basesulu-Repository auf GitHub als Open Source Projekt veröffentlicht. Damit kann jeder Programmierer völlig unabhängig vom Betriebssystem Windows, Mac oder auch Linux schnell und ohne Probleme starten. Möglich macht das DDEV. Das System basiert auf Docker und macht es Entwicklern einfacher die Konfiguration für ein Web Development Setup mit Nginx, PHP, MySQL und Xdebug zu verwalten und einzurichten. Tatsächlich sind es nur vier kleine Schritte, damit man ein vollständiges und lauffähiges System eingerichtet bekommt.
Schritt 1. Docker installieren und starten
Docker ist eine Software für Containervirtualisierung. In diesem Artikel geht es nicht um die Vorteile dieser Arbeitsweise. Dazu folgen aber bald YouTube Videos. Auf der offiziellen Webseite von Docker gibt es eine sehr ausführliche Dokumentation und eine gute Übersicht zu eventuellen Problemen mit Lösungsvorschlägen. Ich persönlich habe Docker jetzt unter Mac, Linux Fedora / Ubuntu und Windows zum laufen bekommen. Bei Windows habe ich allerdings die mit Abstand geringste Erfahrung und hier nur ein Setup für kommende PHP-Training Einsätze eingerichtet. DDEV legt Wert auf aktuelle Komponenten und das ist natürlich auch gut so. Für mein Windows 10 musste ich die Docker Toolbox installieren. Dafür bekam ich allerdings gleichzeitig auch Git und eine Git Bash. Als Web Developer arbeitet man ja bekanntlich mit sehr vielen Tools. Wir haben auch eine PHP Schulung für PhpStorm und weitere Tools. Unser Motto „20% mehr Entwickler werden gesucht, macht eure Teams doch 20% effektiver“. Dazu gibt es auch gerne Vortröge auf Barcamps, Usergroups oder Meetus. Sprecht uns einfach an.
Schritt 2: Docker compose installieren
Etwas einfacher ist die Installation von Docker Compose. Mit Docker Compose können die Container auf Docker sehr gut konfiguriert und weitere Bash-Commands dem Installationsvorgang hinzugefügt werden. Hat man einmal Docker installiert ist das allerdings kein Hexenwerk mehr. Hier kann man sich einfach an die offizielle Dokumentation für die Installation auf dem jeweiligen Betriebssystem halten. Für den Einsatz des Basesulu Projekts ist das nicht nötig. Aber für die Zukunft und die zeitgemäße Entwicklung von PHP-Projekten bietet es sich an dieser Stelle einfach an. Docker Compose wird als Requirement für DDEV vorausgesetzt.
Schritt 2. DDEV installieren für TYPO3, WordPress, PHP-Projekte, Drupal und vieles mehr
Mit Docker und Docker Compose hat man die Systemvoraussetzungen für die Installation von DDEV erfüllt und kann dann auch hier einfach die offizielle und sehr gute Dokumentation nutzen. Bei Linux , dem Betriebssystem auf dem ich seit November arbeite, ist das ein einfacher einzeiler, der das DDEV Command in die Bash bringt. Da Randy als Maintainer von DDEV ein großer Fan von Brew ist kann man sich hier als Mac User glaube ich recht glücklich schätzen. Bei der Einrichtung auf Windows 10 für ein PHP-Training der Entwicklungshilfe NRW hatte ich ebenfalls keine Probleme. DDEV ist speziell für PHP-Projekte ausgelegt und bedient bereits ein Basis Setup für viele gängige PHP CMS- und E-Commerce Frameworks.
Schritt 3. DDEV und Sulu Repository auschecken und Composer installieren
Das Sulu Symfony CMS Projekt Basesulu hat eine Art Basisinstallation, in der bereits ein Page Layout angelegt wurde. Hier ist der Standard User “admin” bereits mitinstalliert. Wichtig an der Stelle ist vielleicht der Hinweis, daß dieser User in einer Produktionsumgebung nicht funktionieren wird. User sind nicht nur an das System, sondern auch an des Environment gebunden. In dem Open Source Git Repository von Never Code Alone ist aber natürlich der vendor Ordner durch einen Eintrag im .gitignore File ausgeschlossen. Von daher müssen die Dependencies ebenfalls noch als kleiner Schritt in der Installation berücksichtigt werden. Aber zuerst einmal müssen wir mit „ddev start“ die Docker Container installieren und starten. Initial dauert das ein wenig, da die Docker Container alle runtergeladen, entpackt und installiert werden müssen. In Zukunft muss das nicht mehr passieren. DDEV nutzt einzelne Container für mehrere Projekte. Das ist wirklich innovativ, schont den Festplattenplatz und beschleunigt die Arbeit deutlich. Danach führt man einfach ein “ddev composer install” aus. Damit werden die PHP-Dependencies über Composer runtergeladen und u.a. der Autoloader generiert. Es ist also nicht nötig Composer lokal zu installieren. Das ist wirklich eine gute Sache. Pitfall: Bitte den Projekt Namen unter .ddev/config für jedes Projekt anpassen.
Schritt 4. Datenbank importieren – DDEV kann das Import und Export Geschäft
DDEV bietet tolle Tools zum Importieren von Files und Datenbank Backups. Genau diese Features sind eine richtig große Stärke und ermöglichen es Entwicklern sehr schnell mal eben ein aktuelles Projekt lokal als Docker Instanz laufen zu lassen. Das ist eine wirklich komfortable Situation, da man so keine Konflikte mit Versionen von Softwarekomponenten wie der PHP-Version auf dem lokalen System bekommt. Im Beispiel gibt es bereits einen basesulu.sql Dump im Root Verzeichnis. Dieser kann einfach über das Kommando
ddev import-db --src=basesulu.sql
importiert werden. Hier wäre es auch möglich gepackte Dateien als .zip oder .tar.gz anzugeben. DDEV kümmert sich dann automatisch um die entsprechende Dateiendung. Es ist auch möglich Projekte wieder aus DDEV heraus zu exportieren. Ich denke genau das ist es, was DDEV für Entwickler auch sehr attraktiv macht.
Erste Schritte mit DDEV und Sulu Symfony Content Management System
Auf der Command Line werden unterschiedliche URLs für den Aufruf der lokalen Domain gezeigt. Ich nehme in eigentlich immer die Subdomain ohne https Zertifikat. Da gibt es aber keinen besonderen Grund für. Im ersten Schritt kann man natürlich einmal das Frontend aufrufen. Hier sieht man noch eine völlig umgestylte Seite, die aber schon auf Mehrsprachigkeit ausgelegt ist und einen Sprachswitch beinhaltet. Hängt man an die Domain den Pfad /admin kommt man zum Login für das Admin Interface. Der aktuelle Login ist hier einfach admin/admin.
Open Source Feedback ist gefragt und Ideen werden gebraucht
Das Projekt dient als Grundlage für unsere Webdesign Projekte mit dem Sulu CMS. In Zukunft werden hier noch einige Features implementiert. Zum Einsatz wird ein einfaches Bootstrap kommen und das auch direkt mit Webpack implementiert. Damit hat man dann seine Dependencies fürs Frontend unter Kontrolle und kann auch schnell ganz moderne Frontend Technologien, wie React und Angular einsetzen. Zentrale Datenpflege über Snippets sind ebenfalls ein wichtiges Thema. Das wird am Beispiel eines Footers realisiert werden. Es gibt noch weitere ideen, aber wir hoffen auch auf Feedback aus der Community in Form von Issus auf GitHub.
Codeception Testing und PHP-Schulung mit DDEV und dem Sulu CMS
Auch bei diesem Projekt setzen wir auf Acceptance Tests mit Codeception. Die können ganz einfach ausgeführt und angewendet werden, wenn man einen Selenium Server im Netzwerk zur Verfügung gestellt hat. Wir bieten zu dem Thema auch unsere Inhouse PHP-Schulungen für Teams an. Hier gibt es ein extra PHP-Training für das Basesulu Projekt. Zusätzlich werden wir das Tool auf Meetups und Usergroups vorstellen. Folgt uns dafür auf unseren Social Media Kanälen und vor allem auf Twitter.
4 Kommentare
[…] And a blog post for this topic is here https://blog.nevercodealone.de/ddev-docker-sulu-symfony-content-management-system/ […]
[…] alles was mit Copy-and-paste zu tun hat. Und das brauche ich gerade bei den Page Konfigurationen im Sulu CMS echt häufig. Hatte ich vor dem Symfony CMS Projekten eine Hand voll eigener Live Templates sind es […]
Hallo, ich habe Sulu 2.5 unter Windows 10 (WSL2 – Ubuntu Distribution, Docker Desktop und DDEV) installiert. Bis auf ein nicht ganz unbedeutendes Problem bin ich begeistert. Allerdings kann ich keine Bilder hochladen. Die Bilder landen nicht im Ordner public/uploads/media sondern im Ordner var/uploads/media. Da werden sie natürlich nicht gefunden. In den Logs von Sulu steht nichts Erhellendes. Habe ich vergessen den Upload-Pfad zu konfigurieren? Wenn ja, wo mache ich das?
Hi,
das liegt an einer speziellen NGINX Anforderung
https://gist.github.com/nevercodealone/264dfda7ce6212db74b3d65f91a766e5
Hilft dir das?
Roland