Beiträge von Tobias

    Die erste Test Migration von 20.1 auf 1.9 hat ebenfalls funktioniert.
    Hatte bei MariaDB die Meldung "Row size too large".
    Konnte für das erste mit innodb_strict_mode umgangen werden. Die Tabelle muss ggf. konvertiert werden.

    Code
    SET innodb_strict_mode = 0;

    Ich habe in der dev Umgebung MariaDB 10.11.2


    OpenXE/systemhealth.php at d9ff872a983e684e4db658fc8bfe29790724533f · OpenXE-org/OpenXE
    OpenXE - Free Open Source ERP based on Xentral. Contribute to OpenXE-org/OpenXE development by creating an account on GitHub.
    github.com


    Code
    $mysqlVersion = $mysqlVersion[0] . '.' . $mysqlVersion[1];

    Kann es sein, dass die Zeile ein false positive erzeugt bei 10.11.2?



    DB-Version:[Blockierte Grafik: https://openxe-dev.amperios-vp…ges/health-message@2x.png]MariaDB 10.1!
    DB-Version ab 20.2:[Blockierte Grafik: https://openxe-dev.amperios-vp…ges/health-message@2x.png]Ab Xentral 20.2 benötigen Sie mind. MySQL 5.7 / MariaDb 10.2 (aktuell MariaDB 10.1). !

    Ich habe es ausprobiert. Funktioniert

    Schneller und kleiner ist ein Mythos :)


    [+] Building 112.4s (24/24) FINISHED alpine

    [+] Building 53.6s (6/6) FINISHED bios

    Code: docker images
    REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
    openxe        latest    3a2fbb4eb5f8   25 minutes ago   2.73GB
    bios/openxe   V.1.7     ff19c97955eb   2 months ago     756MB

    Cron würde ich als Sidecar oder von extern triggern. Mehrere Daemons in einem Container widerspricht dem Konzept von Docker. Das trifft auch auch den supervisord zu. Für was einen weiteren Prozess der keine Funktion hat außer den eigentlichen Prozess zu wrappen?


    SSL Proxy ist kein Problem. Getestet mit HaProxy und Kubernetes Nginx Ingress.
    Den einzigen Bug den ich bisher gesehen habe ist, dass beim Logout ein 302 Redirect passiert der zwar noch auf https geht aber plötzlich port 80 in der URL hat -> location: https://devhost:80/www/index.php

    Vailder Punkt :) Bin nicht mehr dazu gekommen den Merge Request zu erstellen.
    Ich hatte es aufgeteilt in ein base image und in eins mit der eigentlichen app.

    Hier zur Vollständigkeit:


    Code: base image
    ARG PHP_VERSION
    FROM php:${PHP_VERSION}-apache
    
    RUN apt update &&  apt-get install -y unzip wget zlib1g-dev libzip-dev libc-client2007e-dev libc-client-dev libkrb5-dev libxml2-dev libpng-dev libldap-dev && rm -r /var/lib/apt/lists/*
    RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl && docker-php-ext-install zip mysqli imap soap gd ldap intl
    
    RUN curl -fsSL "https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz" -o ioncube.tar.gz && \    tar -xvvzf ioncube.tar.gz && \    mv ioncube/ioncube_loader_lin_8.1.so `php-config --extension-dir` && \    rm -Rf ioncube.tar.gz ioncube && \    docker-php-ext-enable ioncube_loader_lin_8.1.so
    
    RUN printf 'ServerTokens Prod\nServerSignature Off\nTraceEnable Off\n' > /etc/apache2/conf-enabled/security.conf && \    printf 'expose_php = off' > /usr/local/etc/php/conf.d/secure.ini
    Docker: app
    FROM bios/openxe-base
    
    ARG TAG
    
    RUN cd /var/www && \    curl -L -o /var/www/openxe.zip https://github.com/OpenXE-org/OpenXE/archive/refs/tags/${TAG}.zip && \    unzip openxe.zip -x "OpenXE-*/userdata/wiki/XentralHandbuch/*" && \    rm -f openxe.zip && \    rm -rf /var/www/html && \    mv OpenXE-* html && \    chown -R www-data:www-data html
    
    RUN curl -s https://raw.githubusercontent.com/OpenXE-org/OpenXE/ce11caac120a515d9c792839a690f353762b1643/www/setup/setup.php > www/setup/setup.php

    Pack die Alpine Version mal mit rein oder stelle gleich einen Merge Request dann haben wir eine einheitliche Basis

    Das Dockerfile liegt hier: https://github.com/tsgoff/docker-openxe/blob/main/Dockerfile

    Also Basis verwende ich ein zweites Dockerfile bios/openxe-base mit php:8.1-apache in dem die Dependencies installiert werden damit der Build für OpenXE nicht so lange dauert.

    Mir fehlt noch eine Lösung wie man am besten mit dem Config Ordner umgeht. Wenn man ihn direkt mountet ist der bei einer Installation leer und das Template fehlt. Da müsste man noch ein entrypoint script mit der Logik hinterlegen für neue bzw. bestehende Installationen. Wenn ich Zeit habe und mir was passendes einfällt erstelle ich einen PR.

    Um OpenXE schnell lokal zu starten habe ich für den Tag 1.7 ein Docker Image gebaut.

    Mit Docker Compose kann man eine MariaDB und OpenXE 1.7 Instanz lokal starten. http://localhost:8282/www/setup/setup.php


    bios/openxe:V.1.7

    Code: Docker Quickstart
    git clone https://github.com/tsgoff/docker-openxe.git && \
      cd docker-openxe && \
      docker compose up

    Aktuell wird nur der Datenbank und der userdata Ordner lokal gemountet.

    Auf Kubernetes läuft das Konstrukt ebenfalls.

    Code
    kubectl apply -f openxe-depl-svc.yaml

    Wird der OpenXE Container gekillt und neu erstellt muss man conf/user.inc.php manuell neu erstellen.

    Code
    Deprecated: function_exists(): Passing null to parameter #1 ($function) of type string is deprecated in /var/www/html/www/setup/setup.php on line 104

    Im Installer Script läuft man mit PHP 8.1 in eine deprecated Meldung


    diry workaround in www/setup/setup.php

    Code
    $error = ((function_exists($action ?? '')) ? $action() : '');