English
DH3MFW
headerimage

Die Anforderung war einen Webshop zu erstellen, der nach einen Denial-of-Service Attack schnell wieder Online genommen werden kann. OSCommerce, Opencart und wie auch andere, haben den Nachteil, wenn der Shop erstellt ist, wird dieser per Hand befüllt und es ist schwierig, Produkte automatisiert zu importieren.

Ich selbst verwende JTL-Wawi seit einigen Jahren und hatte schon einen angedockten JTL-Shop damit ausprobiert.

In der Freeware Version kann kostenfrei ein eigener Shop mit bis zu 500 Produkten angebunden werden. Dafür braucht es einen fertigen JTL-Shop oder auch andere und aus dem Warenwirtschaftssystem wird ein weiterer Verkaufskanal (der Shop) angegeben und die Produkte dann dort hineingesynced. Fertig.

Sprich nach einem Hackerangriff, einfach den Shop (Container) neu erstellen und die Produkte hineinsyncen :-)

Jetzt wird es spannend. Es gibt noch keine Anleitung, wie ein JTL-Shop unter Docker zu installieren ist. Ich verwendete zuerst die Konfiguration von Opencard (Dockerfile + docker-compose.yaml) und ging das Installation Setup von JTL-Shop durch und das sagte mir dann welche Komponenten dem Installations-Skript in dem Linux-Container fehlten. So tastete ich mich nach und nach an das Richtige Dockerfile und docker-compose.yaml File heran.

Auf der Synology habe müssen noch per Hand unter dem Docker-Verzeichnis, die Verzeichnisse:

- dbdata und - htdocs angelegt werden.

Nach dem Start dauerte es bei mir bis zu 10 Minuten bis die Container gestartet waren.

FROM php:8.2-apache
RUN apt-get update && apt-get install -y \
libfreetype-dev \
libjpeg62-turbo-dev \
libpng-dev \
libxml2-dev \
libxslt1-dev \
libzip-dev \
libonig-dev \
libcurl4-gnutls-dev \
libicu-dev \
unzip \
wget \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& apt-get install -y imagemagick \
&& docker-php-ext-install -j$(nproc) gd intl mbstring mysqli soap xml xsl zip pdo fileinfo pdo_mysql calendar bcmath \
&& a2enmod rewrite headers \
&& service apache2 restart

version: '3.8'
services:
  web:
    build: .
    ports:
    - "81:80"
    depends_on:
      - db
    volumes:
    - ./htdocs:/var/www/html
    environment:
      - APACHE_DOCUMENT_ROOT=/var/www/html

  db:
    image: mysql
    restart: always
    volumes:
    - ./dbdata:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: opencart
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    ports:
    - "3307:3307"

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
    - '8081:80'
    environment:
      PMA_HOST: db
      PMA_PORT: 3307
      MYSQL_ROOT_PASSWORD: rootpassword
    depends_on:
      - db

volumes:
  db_data:

Ob Ihr einen Container mit dem PHPMyadmin wollt bleibt Euch überlassen ;-).

Jetzt beginnt die JTL-Installation:

In die CLI des Docker Container gehen:

Mit wget www.dh3mfw.de/tmp/show-v5-4-1.zip habe ich das Installationsfile in den Container geholt. Und mit unzp show-v5-4-1.zip entpackt. Aufpassen im WWW-Root Verzeichnis entpacken ;-).

Wie es weitergeht ist dann recht gut, auf der JTL-Homepage ab Schritt 3 beschrieben.

http://<ip>:81/  --> Reload auf /Install/

Hier müssen die Rechte richtig gesetzt werden. In der Doku ist eine Zeile aufgeführt, allerdings hat diese bei mir nicht hingehauen. Ich verwende nun folgende Zeilen:

JTLShop_Rechte_Setzen.txt

Erst bei der Konfiguration der Datenbankanbindung braucht es eine Änderung:

Host: NICHT localhost, sondern db --> so heist der Datenbank-Container

Benutzername + Passwort + Datenbankname, wie im docker-compose.yaml File definiert.

Dieser Vorgang hat bei mir teilweise 10Minuten gedauert !!

Da waren die Rechte des includes-Verzeichnisses und der INI-Datei nicht gesetzt. Ist in meiner TXT-Datei schon richtig eingetragen.

Fertig !!

 

 

 

 

nach oben