Kostenvergleich Apps Preise Blog Termin buchen

Shopware 6 mit Docker: Setup, Performance-Tuning und Produktions-Stack

Shopware 6 mit Docker: Setup, Performance-Tuning und Produktions-Stack

Shopware ist die führende E-Commerce-Plattform aus Deutschland — und mit Shopware 6.7 hat sich der Docker-Support deutlich verbessert. Offizielle Docker-Images, FrankenPHP-Support und klare Produktions-Empfehlungen machen Self-Hosting realistischer denn je. Aber die Anforderungen sind hoch: OpenSearch, Redis, Varnish und PHP-Workers müssen orchestriert werden.

In diesem Artikel zeigen wir den kompletten Produktions-Stack, Performance-Tuning und typische Fallstricke. Wenn Sie generell vor der Entscheidung Cloud vs. Self-Hosting stehen, empfehlen wir unseren Artikel über die wahren Kosten von Self-Hosting.

Shopware 6.7: Technische Basis

Shopware 6.7 (aktuell 6.7.6.0, Januar 2026) basiert auf dem Symfony-Framework. Version 6.8 ist für 2027 geplant — bis dahin liegt der Fokus auf Stabilität und Performance.

Systemanforderungen

Komponente Minimum Empfohlen
PHP 8.2 8.3 oder 8.4 (6.7 unterstützt 8.4)
MySQL 8.0.22+ 8.0 LTS (8.0.20/21 haben bekannte Bugs)
MariaDB 10.11 10.11 LTS
Node.js 20 20+
RAM 2 GB (absolutes Minimum) 8–16 GB
CPU 2 Cores 4+ Cores
Storage SSD (Pflicht) NVMe bevorzugt

PHP-Extensions: ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcre, pdo, pdo_mysql, phar, simplexml, xml, zip, zlib. memory_limit mindestens 512M.

Docker-Images: Die richtige Wahl

Shopware bietet offizielle Base-Images unter ghcr.io/shopware/docker-base:

  • ghcr.io/shopware/docker-base:8.3-frankenphp — empfohlen für Produktion (FrankenPHP, automatische Ressourcenallokation)
  • ghcr.io/shopware/docker-base:8.3-caddy — Alternative mit Caddy (Vorsicht: Shopware warnt vor einer DoS-Schwachstelle mit Transfer-Encoding)
  • ghcr.io/shopware/docker-base:8.3-fpm — klassisches PHP-FPM, eigener Webserver nötig

Wichtig: Die Images enthalten PHP + Extensions, aber nicht Shopware selbst. Sie kopieren Ihr Composer-Projekt ins Image und bauen es:

FROM ghcr.io/shopware/docker-base:8.3-frankenphp

COPY . /var/www/html
RUN composer install --no-dev --optimize-autoloader

Das alte shyim/shopware-Image ist seit Shopware 6.5 deprecated. Dockware (dockware.io) ist für Entwicklung beliebt, aber nicht für Produktion geeignet.

Produktions-Stack: Docker Compose

services:
  shopware:
    build: .
    environment:
      - APP_ENV=prod
      - APP_SECRET=${APP_SECRET}
      - DATABASE_URL=mysql://shopware:${DB_PASSWORD}@db:3306/shopware
      - OPENSEARCH_URL=http://opensearch:9200
      - SHOPWARE_ES_ENABLED=1
      - SHOPWARE_ES_INDEXING_ENABLED=1
      - REDIS_CACHE_URL=redis://redis:6379/0
      - REDIS_SESSION_URL=redis://redis:6379/1
      - TRUSTED_PROXIES=REMOTE_ADDR
    depends_on:
      - db
      - redis
      - opensearch
    restart: unless-stopped

  db:
    image: mariadb:10.11
    environment:
      - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
      - MYSQL_DATABASE=shopware
      - MYSQL_USER=shopware
      - MYSQL_PASSWORD=${DB_PASSWORD}
    volumes:
      - db-data:/var/lib/mysql
    command: >
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_unicode_ci
      --innodb-buffer-pool-size=512M
    restart: unless-stopped

  redis:
    image: valkey/valkey:8-alpine
    volumes:
      - redis-data:/data
    restart: unless-stopped

  opensearch:
    image: opensearchproject/opensearch:2
    environment:
      - discovery.type=single-node
      - plugins.security.disabled=true
      - OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m
    volumes:
      - os-data:/usr/share/opensearch/data
    restart: unless-stopped

  worker:
    build: .
    command: php bin/console messenger:consume async low_priority --time-limit=300
    environment:
      - APP_ENV=prod
      - DATABASE_URL=mysql://shopware:${DB_PASSWORD}@db:3306/shopware
    depends_on:
      - db
      - redis
    restart: unless-stopped

volumes:
  db-data:
  redis-data:
  os-data:

Wichtige Hinweise zum Stack

  • TRUSTED_PROXIES: Zwingend setzen, wenn Shopware hinter Traefik oder einem anderen Reverse Proxy läuft. Ohne diese Einstellung erkennt Shopware HTTPS nicht korrekt
  • Worker-Container: Shopware nutzt Symfony Messenger für asynchrone Aufgaben (E-Mails, Imports, Indexierung). Ohne Worker bleiben diese Aufgaben in der Queue hängen
  • Valkey statt Redis: Shopware 6.7 nutzt in eigenen Benchmarks Valkey — den Open-Source-Fork von Redis

OpenSearch: Pflicht für Performance

Seit Shopware 6.6 ist OpenSearch der empfohlene Such-Backend. Elasticsearch funktioniert noch (ab 7.8+), aber die Advanced Search 2.0 ist nicht mehr mit Elasticsearch kompatibel.

Ohne OpenSearch durchsucht Shopware den Katalog per SQL-Queries — bei großen Katalogen (5.000+ Produkte) werden Such- und Kategorieseiten spürbar langsam. Mit OpenSearch bleiben Antwortzeiten unter 100 ms.

Performance-Tuning

Shopware 6.7 Benchmarks zeigen dramatische Verbesserungen mit Caching:

  • +108 % mehr Bestellungen pro Sekunde mit Varnish + Valkey
  • -85 % geringere Latenz im Vergleich zu ohne Caching

Varnish als HTTP-Cache

Für Shops mit hohem Traffic ist Varnish vor Shopware der größte Performance-Hebel. Shopware liefert eine eigene VCL-Konfiguration mit. Der Varnish-Container sitzt zwischen Traefik und dem Shopware-Container.

Weitere Optimierungen

  • OPcache: Muss aktiviert sein (opcache.memory_consumption=256, opcache.max_accelerated_files=20000)
  • InnoDB Buffer Pool: Auf 50–70 % des verfügbaren RAM setzen
  • Redis/Valkey für Sessions: File-basierte Sessions sind ein Performance-Killer unter Last
  • HTTP/2 Push: FrankenPHP unterstützt Early Hints für schnelleres Laden kritischer Assets

Typische Fallstricke

TRUSTED_PROXIES nicht gesetzt

Symptom: Mixed Content Warnings, HTTPS-Redirects funktionieren nicht. Lösung: TRUSTED_PROXIES=REMOTE_ADDR oder die IP des Reverse Proxy setzen.

Worker vergessen

Symptom: E-Mails werden nicht versendet, Produktimporte bleiben hängen. Lösung: Separaten Worker-Container mit messenger:consume starten.

memory_limit zu niedrig

Symptom: White screens bei Plugin-Installation oder Composer-Operationen. Lösung: Mindestens 512M, besser 1G für CLI-Operationen.

MySQL 8.0.20/8.0.21

Diese Versionen haben bekannte Bugs, die Shopware betreffen. Nutzen Sie 8.0.22+ oder MariaDB 10.11.

Managed Shopware Hosting

Ein Shopware-6-Stack in Produktion umfasst 4–6 Container (App, DB, Redis, OpenSearch, Worker, optional Varnish), die aufeinander abgestimmt sein müssen. Updates, Backups, Performance-Monitoring und Security-Patches sind ein fortlaufender Aufwand.

Bei netzspitze.tech betreiben wir Ihren Shopware-Stack professionell:

  • Kompletter Docker-Stack mit FrankenPHP, OpenSearch und Redis/Valkey
  • Automatische Backups (Datenbank + Medien)
  • Performance-Monitoring und Alerting
  • SSL via Traefik mit automatischer Zertifikatserneuerung
  • Staging-Umgebung für sichere Updates

Jetzt Beratungstermin buchen — wir bringen Ihren Shop auf die sichere Infrastruktur.

Bereit für eigene Infrastruktur?

15 Minuten Call – wir klären ob Self-Hosting für euch passt.

Termin buchen