E-Commerce

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