Docker Container für OXID 6

Ich empfehle euch für einfache Container-Erstellung DDEV (https://www.ddev.com).

DDEV erstellt in sekundenschnelle Dockercontainer für eure Anwendungen.
Im Config-File sind die Einstellungen schnell gewechselt. per Console kann auch in sekundenschnelle
X-Debug aktiviert werden.

1 Like

Dem kann ich nur zustimmen, selber sehr positive Erfahrungen mit DDEV gemacht um eine lokale Testumgebung mit Hilfe von Docker aufzusetzen. Docker Kenntnisse können nie schaden, aber DDEV nimmt einen sehr viel ab.

Meine lokale Testumgebungen sind bereits auf DDEV umgestellt.

Hallo, mit einigen Mühen (Docker - was ist das? Git? und viele weitere ??) habe ich nun docker-oxid6 soweit am Laufen, dass auf localhost:80 der Osix-shop mit “Maintenance mode” meldet und PHP-Admin auf port 8080. Aber wie kann ich auf meinem Windows 10 System die www-data Rechte ändern? Mit welchen login-daten kann ich per FTP darauf zugreifen? Welcher Account mit welchem PW gilt für PHP-Admin?
Wenn das alles gelöst ist, kommen die nächsten Fragen :wink:
Danke schon mal für Antworten auf obige 3 Fragen.:slight_smile:

Ach ja noch ein Phänomen: Nach Absetzen des Befehls “docker-compose up” fing nach gut 650 Zeilen diverser anderer Ausgaben (wie “Pull complete”, " [APIv1] KEEPALIVE /api/v1/events", “ysqld: Shutdown complete”, " Creating a “oxid-esales/oxideshop-project” project at “./”",“Oxid Migrations CE”, “No migrations to execute.” u.a.) ein Loop an:

oxid6_apache_1 | 172.18.0.1 - - [17/Mar/2021:20:14:20 +0000] “GET /out/flow/img/logo_oxid.png HTTP/1.1” 304 181 “http://localhost/index.php” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0”

wobei die Datei logo_oxid.png schon längst auf dem Rechner gelandet ist. Ctrl-C hat dem ein Ende bereitet. nach Wiederholung von “docker-compose up” ist das Ergebnis wieder ein Loop. :frowning:
Wo muss ich nach dem Fehler suchen? (morgen geht’s weiter)

Hallo Meliphagidae,

versuche bitte einmal deine Docker Container über DDEV zur erstellen.
DDEV ist sozusagen ein Wizard der dir einige vorgefertigte Docker Container bietet und diese dir in nullkommanix zur Verfügung stellt. Bei DDEV und OXID musst du als Voreinstellung PHP verwenden und in die Voreinstellungen auf die Maria-DB und statt NGINX-fpm die APACHE-fpm Einstellung auswählen.

Ich setze mittlerweile eine OXID DEV Umgebung damit innerhalb von maximal 5 Minuten auf.

Bei DDEV und WINDOWS musst du allerdings glaube ich auch noch den Loader Chocolaterey installieren, dann kannst du in der Powershell ganz einfach mit: “choco install ddev” das ddev installieren.

Dann in das Verzeichnis wechseln wo deine VM liegen soll und dann folgenden Befehl ausführen:
“ddev config”. Schon wirst du durch einen Wizard geleitet, Danach solltest du deine versteckten Ordner einblenden und in dem Verzeichnis .ddev die Einstellungen der Maria DB und Apache vornehmen.

Hier die Befehle wie du mit DDEV lauffähig wirst:

ddev config // Wizard der Starkonfiguration
ddev start // Startet die Docker Container, beim ersten mal wird alles instaliert
ddev describe // Zeigt alle Ports, Domains und Passwörter an
ddev ssh // Damit wechselst du in die SSH-Konsole und führst bei Composer die OXID Installation aus oder holst dir deine Repository von GIT
ddev stop // Stoppt die Umgebung

Mit freundlichen Grüßen

Benjamin

1 Like

Docker läuft quasi als Virtuelle Linuxmaschine als guest auf Deinem Windows-Host. Wenn Du Dich dort einloggst, kannst Du genau wie auf jeder anderen Linux-Maschine auf der Shell arbeiten, z.B. auch chown für www-data ausführen.

In aller Regel werden Ordner erstellt, die zwischen dem Guest- und dem Hostsystem synchronisiert werden. Damit kannst Du dann direkt von Windows aus in Deinem Projekt Änderungen durchführen, die sofort über localhost:80 (wie bei Dir) sichtbar sein sollten.

Die Datenbankn sprichst Du entweder über die Linux-Shell innerhalb des Docker-Containers an oder installierst Dir halt dort noch zusätzlich adminer, phpMyAdmin o.ä.

Docker war mir viel zu kompliziert @marco.steinhaeuser. ich benutze Laragon als Server unter Windows 10.
Hier eine Installationsanleitung: Contao & Laragon: Schritt für Schritt zur lokalen Entwicklungsumgebung unter Windows
Die ist zwar ursprünglich für Contao geht aber auch sehr gut für OXID.

Ich möchte nichts anderes mehr!

Ja! Und das was ich oben geschrieben habe, ist gar nicht mal nur auf Docker gemünzt sondern soll erklären, wie VMs heutzutage so funktionieren - unabhängig von der technischen Basis und eingehend auf die Fragen von @Meliphagidae :wink:

Danke @marco.steinhaeuser .
in den phpadmin komme ich rein, dazu stehen User und PW in der Datei “…\docker-oxid6-master.env”
Aber Zugriff per PUTTY bzw. FTP (Total Commander) klappen nicht (“Networ error. Connection refused” bzw. “Verbindung nicht erfolgreich”). Nach was muss ich suchen um diese Klippe zu umschiffen? Macht die windows Firewall nicht mit (Putty habe ich für das private Netzwerk erlaubt).

Ich glaube, das funktioniert so nicht per putty oder (S)FTP. Schau mal hier: How do I get into a Docker container's shell? - Stack Overflow

Use docker exec askubuntu.com/a/543057/35816 . Get the container id using docker ps

Für Unsereiner quasi ohne Unix-Kenntnisse ist das ganze Zeug alles andere als ein 5’-Vorgang um eine Oxid-Test-Umgebung zu bekommen. :frowning_face:Stöhn… Weiß noch nicht, ob ich mit den Tipps weiterkomme oder einige Schritte zurück muss. Danke für die Tipps soweit.

Frag bitte nicht. Das Ganze hat mich echt auch sehr viel Nerven und Zeit gekostet. Ich hab das auch nicht mit der Muttermilch aufgesogen und mir fällt das auch nicht irgendwie in den Schoß, wie manche immer denken :wink:

Gibt es hier Erfahrungswerte bezüglich Windows 10 + Docker + WSL2 bezüglich Performance?
Jemand bereits Problem gehabt, dass der Shop langsam lädt?
Vermutung ist, dass die Datenbankverbindung der Falschenhals.
Gibt es dort Konfiguration auf die man besonders achten muss oder Firewalls die man deaktivieren muss etc?

ja, hier. Performance ist mies.

Bevor wir anfangen, einigen wir uns auf folgende Begriffe:
Host = Windows 10 PC.
WSL ist WSL2
Gast = Container.

Das Problem hier ist folgendes:
wenn ein Order vom Host in den Gast gemountet wird, ist es eine reguläre Netzwerkfreigabe wie bei VirtualBox. D.h. wenn der Shop Root auf dem Host liegt, ist das Auslesen der Dateien im Gast schon mal sehr langsam. Das gilt natürlich auch wenn der mysql data Ordner vom Host gemounted wurde.
Das kann man nicht fixen, das ist eine Treibergeschichte.
NFS würde geringfügig was verbessern, aber nicht viel.

Die einzige mir bekannte Möglichkeit wäre:
keine direkten Mounts/Volumes vom Host zum Gast, sondern die Shop-Dateien liegen im WSL und werden von dort in den Gast gemounten.
In diesem Fall greift Windows praktisch auf die Netzwerkfreigabe vom WSL, so dass die Latency hierher verlagert wird, anstatt zwischen Webserver und Shopdateien.
Das würde wirklich viel bringen, so wie Docker auf Linux funktioniert.

Hier steht bisschen was mehr dazu:

2 Likes

@vanilla_thunder vielen Dank für Deine Ausführungen und den Lösungsansatz.

Hallo zusammen,

in der neuen Firma läuft OXID CE und um mich damit mal auseinandersetzen zu können, war der Plan mir eine Entwicklungsumgebung aufzusetzen, weshalb ich hierauf gestoßen bin.

Leider bekomme ich beim starten des Container immer folgende Fehlermeldung und der Apache endet im restart loop. Die Files fehlen einfach in meiner Orderstruktur. Vielleicht kann jemand Abhilfe schaffen?

For additional security you should declare the allow-plugins config with a list of packages names that are allowed to run code. See https://getcomposer.org/allow-plugins
You have until July 2022 to add the setting. Composer will then switch the default behavior to disallow all plugins.
docker_oxid6-oxid6_apache-1      | Creating a "oxid-esales/oxideshop-project" project at "./"
docker_oxid6-oxid6_apache-1      | 
docker_oxid6-oxid6_apache-1      | In CreateProjectCommand.php line 385:
docker_oxid6-oxid6_apache-1      |
docker_oxid6-oxid6_apache-1      |   Project directory "/var/www/html/." is not empty.
docker_oxid6-oxid6_apache-1      |
docker_oxid6-oxid6_apache-1      |
docker_oxid6-oxid6_apache-1      | create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--add-repository] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--remove-vcs] [--no-install] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--ask] [--] [<package> [<directory> [<version>]]]
docker_oxid6-oxid6_apache-1      |
docker_oxid6-oxid6_apache-1      | run-parts: /entrypoint.d/010-oxid.sh exited with return code 1
docker_oxid6-oxid6_apache-1      | run-parts: executing /entrypoint.d/020-demodata.sh
docker_oxid6-oxid6_apache-1      | /entrypoint.d/020-demodata.sh: line 10: /var/www/html/source/Setup/Sql/database_schema.sql: No such file or directory
docker_oxid6-oxid6_apache-1      | run-parts: /entrypoint.d/020-demodata.sh exited with return code 1
docker_oxid6-oxid6_apache-1      | run-parts: executing /entrypoint.d/030-migrations.sh
docker_oxid6-oxid6_apache-1      | /entrypoint.d/030-migrations.sh: line 4: vendor/bin/oe-eshop-db_migrate: No such file or directory
docker_oxid6-oxid6_apache-1      | run-parts: /entrypoint.d/030-migrations.sh exited with return code 127

Willkommen im OXID Forum.

Hmm… Ich habe eben auf meiner Ubuntu Distribution elementary OS die Quickstart Anleitung

# clone repository:
git clone https://github.com/proudcommerce/docker-oxid6.git docker_oxid6
cd docker_oxid6
# create container
docker-compose build
# fire up container
docker-compose up

befolgt und der Shop läuft problemlos unter http://oxid6.localhost

Da wäre die Frage wie bist Du im Detail vorgegangen? Welches Betriebssystem setzt Du ein?

Am schwierigsten gestaltet sich bei Webprojekten eine Entwicklungsumgebung beim Betriebssystem Windows, weil Du WSL2 Hardware Anforderungen erfüllen müsst mit Deiner Maschine und deutlich zusätzlichen Konfigurationsaufwand gegenüber Linux und Mac hast.

Da Du WSL2 konfigurieren musst, damit die lokale Testumgebung performant läuft.

Selber würde ich davon abraten eine lokale Testumgebung auf einem Windows Betriebssystem einzurichten. Hintergrund ist, dass sich zwei unterschiedliche Dateisysteme miteinander unterhalten müssen. Was unglaublich Performance Nachteile bringt.

Tipp für Windows Nutzer wäre sich parallel eine native Ubuntu Umgebung auf seine Maschine installieren und dort die Testumgebung aufbauen. Hat man auf lange Sicht mehr Freude dran.

Kann ich unterschreiben. In der Theorie sollte es ja mit WSL2 gut oder zumindest “besser” sein, in (meiner) Praxis bleibt das aber bis noch, auch ganz unabhängig von OXID, reine Theorie. Entweder man vergeudet die Zeit mit unglaublich schlechter Performance, oder mit rumkonfigurieren und neustarten. Aber so richtige Zufriedenheit stellt sich dabei nicht ein.

Hat jemand von Euch Erfahrung im produktiven Einsatz von Containern generell?

ich habe die Shop genauso wie in der Anleitung installiert, aber ich bekomme den Adminbereich nicht zum laden. Er lädt und lädt aber da passiert nichts. Kennt jemand das Problem? Wo liegt die Fehlerursache?