Gute Docker-Container: Shopware
Website Monitoring Magazin
Docker ist aus der professionellen Webentwicklung kaum noch wegzudenken. Innerhalb von Minuten hat man ganze Systeme und Infrastrukturen am Laufen. Wie man Docker am besten für Magento nutzen kann, haben wir bereits beschrieben. In diesem Artikel wird es um Shopware gehen.
Auswahl des Docker Images
Wenn es um Docker und Shopware geht, dann gibt es ein Image, dass federführend genutzt wird. Dockware. Warum haben wir diesen Service gewählt? Dafür gibt es ein paar sehr gute Gründe:
-
Unterstützt Shopware 5 und Shopware 6 - Auch wenn die aktuelle Version 6 schon eine Weile auf dem Markt ist, gibt es da draußen immer noch mehr Installationen der Version 5.
-
Sehr gut dokumentiert - Docker macht es sehr einfach ein System wie Shopware zu installieren, trotzdem ist es wichtig, dass die Dokumentation gut ist. Besonders nett ist, dass die Macher des Images (Das ist Web) aus Deutschland kommen und so der Support noch mal ein Stück einfacher durchgeführt werden kann.
-
Open Source - Irgendwas stimmt nicht? Kein Problem, einfach selbst die benötigte Anpassung machen und Pull Request stellen. Deswegen lieben wir Open Source. Gemeinsam wird man immer besser. (Das ist übrigens auch der Grund, warum wir unsere Plugins als Open Source rausbringen)
Wir haben unsere Shopware Monitoring Plugins beide auf Dockware entwickelt und finden es ein großartiges Image, das mit viel Liebe gepflegt wird.
Installation
Sobald Docker auf dem Rechner läuft, ist es nur noch ein kurzer Weg zum lokalen Shopware Shop. Da wir ein paar Verzeichnisse und Ports anpassen wollen, haben wir uns dazu entschieden gleich eine eigene docker-compose.yml
zu schreiben, sodass wir auch gleich alles in einer Datei festhalten können.
version: "3"
services:
shopware:
image: dockware/play:latest
container_name: shopware
ports:
- "80:80"
networks:
- web
networks:
web:
external: false
Das ist die wahrscheinlich einfachste Methode Shopware zu starten. Das Image beinhaltet bereits alles, was man benötigt: PHP, MySQL, Adminer, XDebug und vieles mehr.
Sobald man die Datei im richtigen Verzeichnis abgelegt hat, kann man über docker-compose up -d
das System starten und über den Port 80 (HTTP) auf den Shop zugreifen. Danach lässt sich ganz einfach die Installation durchführen. Fertig. Der ganze Prozess sollte nicht länger als 10 Minuten dauern.
Plugins entwickeln
Jetzt gibt es zwei Möglichkeiten weiter zu machen.
-
Umschauen: Da jetzt schon ein vollwertiger Shopware Shop am Laufen ist, kann man sich jetzt umschauen. Die ersten Produkte in den Shop werfen und den Kaufprozess durchspielen. Empfinden wir als eine wunderbare Option, wenn man zum Beispiel aus dem Magento- oder WooCommerce-Umfeld kommt und den Blick über den Tellerrand wagen will. Aber auch eine tolle Möglichkeit, wenn man noch auf Shopware 5 läuft und sich die Neuerungen in Shopware 6 ansehen möchte. Da hat sich so ziemlich alles geändert.
-
Plugins entwickeln: Jetzt wo Shopware läuft, kann man auch damit beginnen es zu erweitern und die ersten Plugins zu entwickeln. Das einzige, was man dazu machen muss, ist, Docker so anzupassen, dass man von Außen auf das Plugin-Verzeichnis zugreifen kann.
Dank Docker geht dies sehr einfach mit einer kleinen Ergänzung in dem docker-compose.yml
.
volumes:
- ./plugins:/var/www/html/custom/plugins
Somit wird das lokale Verzeichnis plugins
in den Container reingemountet und kann ab jetzt aus dem Shop heraus aufgerufen werden. Jedes Plugin, das man dort entwickelt oder reinkopiert steht sofort bereit und kann über den Adminbereich des Shops installiert und danach aktiviert werden.
Debugging
Wer ordentlich entwickeln will, dem sei auch XDebug ans Herz gelegt. Zum Glück ist die PHP-Erweiterung mit im Container verankert und kann mit einer kleinen Anpassung an der Konfiguration genutzt werden.
environment:
- XDEBUG_ENABLED=1
Kommandozeile
Als Entwickler möchte man natürlich auch auf die Kommandozeile wechseln. Dies geht direkt über Docker mit folgendem Befehl (zumindest so lange der Container läuft):
docker exec -it shopware /bin/bash
Zwischen den Versionen wechseln
Dockware bietet die Möglichkeit Shopware 5 und Shopware 6 auf die gleiche Art und Weise zu installieren und zu nutzen. Dabei muss lediglich das image ausgewechselt werden. Will man zum Beispiel die Version 5.6.7
nutzen, so wählt man image: dockware/play:5.6.7
aus. Bei Version 6 kann man auf image: dockware/play:latest
wechseln, um immer up-to-date zu sein.
Finale Version
Die finale Version der Docker-Konfiguration, mit der wir unser Shopware 5 Monitoring Plugin entwickelt haben, sieht dann wie folgt aus:
version: "3"
services:
shopware:
image: dockware/play:5.6.7
container_name: shopware
volumes:
- ./plugins:/var/www/html/custom/plugins
ports:
- "80:80"
- "3306:3306"
- "22:22"
- "8888:8888"
- "9999:9999"
networks:
- web
environment:
- XDEBUG_ENABLED=1
networks:
web:
external: false
Support der Shopware-Community
Auch wenn diese Docker-Einstellungen keine offiziellen sind, so sollte man erwähnen, dass die Community sehr helfend und unterstützend ist bei allen Fragen. Wir konnten uns selbst ein Bild davon machen im Interview mit Claudia Teubner zum Thema Community-Management bei Shopware.