Shopware 5.4 docker-compose.yml - Erhalte nur 404 beim Aufruf

Hallo liebe Shopware-Community,

Ich habe mir zur Entwicklung Shopware direkt aus dem Shopware-Github-Repository geforkt (shopwareLabs/shopware).

Ich würde gerne die vorhande docker-compose.yml und das dazugehörige dev-environment zur weiteren Entwicklung nutzen, wenn ich diese allerdings durchstarte, finde ich keine Möglichkeit, die Shopware-Installation aufzurufen.

Was ich gemacht habe (wirklich der exakte Ablauf, so sollte es ja auch sein bei einem richtig konfigurierten Docker-Container):

git clone https://github.com/shopwareLabs/shopware

cd shopware

docker-compose up

Der Container fährt sauber hoch und laut Log ist alles soweit da.

Ich habe durch apachectl -S herausgefunden, dass der VHost unter dem domain name docker.vm registriert wird und auch wirklich auf Port 80 läuft.

Habe mir in der HOSTS-file docker.vm und f791b4f92d3a auf 127.0.0.1 gemappt.

Aufgerufen habe ich

http://localhost/{shopware|index|recovery/install/index}.php

http://127.0.0.1/{s.o.}

http://docker.vm/{s.o.}

http://f791b4f92d3a/{s.o.}  

Bei f791b4f92d3a handelt es sich um meine Container-ID, die anscheinend im app-container in /opt/docker/etc/httpd/conf.d/10-server.conf ebenfalls als vhost eingetragen wird.

In jedem der Fälle, egal welche URL ich aufrufe, erhalte ich einen 404 direkt von Apache, heißt, der Shopware-Bootstrap wird nie getriggert. Apache selbst scheint aber auf dem richtigen Port zu antworten (ist der einzige Apache, der auf meinem System existiert, inkl. anderer Container, also muss er das sein)

Ich habe außerdem versucht, die .htaccess Datei zu korrumpieren damit ich wenigstens einen 500er bekomme um zu sehen ob irgendwas triggert, aber auch diesen kriege ich nicht erzeugt, d.h. die .htaccess wird vollständig ignoriert und somit scheint /app auch nicht mein DocumentRoot zu sein.

Es scheint fast so, als würde der Docker-Container auf etwas völlig anderes mappen, allerdings habe ich in der Config überprüft, dass:

  • Die App-files auch wirklich in /app liegen

  • Der DocumentRoot des Apache2 auch wirklich /app ist

  • Der Vhost docker.vm auch wirklich auf /app zeigt (was er tut)

apachectl -S hatte folgende Ausgabe:

VirtualHost configuration:
*:80                   docker.vm (/opt/docker/etc/httpd/vhost.conf:5)
*:443                  docker.vm (/opt/docker/etc/httpd/vhost.conf:21)
ServerRoot: „/etc/apache2“
Main DocumentRoot: „/app“
Main ErrorLog: „/docker.stderr“
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir=„/var/run/apache2/“ mechanism=default
PidFile: „/var/run/apache2/apache2.pid“
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name=„www-data“ id=33
Group: name=„www-data“ id=33

Sieht im Grunde ganz gut aus, selbst die Änderung am Logging nach docker.stderr wird von der Config grundsätzlich anerkannt.

Laut Dockerfiles sollen die Logs in den Docker-Output gemappt werden, das passiert ebenfalls nicht. Ich erhalte keinerlei Access-Logs, zu keinem Zeitpunkt, weder im docker-compose output noch sonst wo. Ich kann diese auch nicht unter /var/log/apache2/*.log finden, heißt, sie landen irgendwo im Nirvana.

 

Ports sind alle frei, für sämtliche in der docker-compose enthaltenen Dienste, inkl. PHP-FPM mit Port 9000.

 

Nun frage ich mich: Was mache ich falsch? Im Grunde ist das doch ein geradliniger Prozess, aber ich scheine etwas zu übersehen.

Betriebssystem ist Windows 10 64bit mit Docker im Hyper-V Modus, ich nutze Docker für sämtliche meiner Projekte und derartige Spielchen konnte ich bisher nicht beobachten, nutze allerdings auch meist nginx innerhalb der Container.

 

Vielen Dank für eure Hilfe,

Gruß,

Torben

Hallo Torben,

Frage: warum nutzt du nicht das offizielle Repo?  Smile GitHub - shopware/shopware: Shopware 5 Repository - For Shopware 6 visit https://github.com/shopware/platform (wobei wir uns gerade fragen, warum es einen Fork unter shopwareLabs gibt  Grin )
Sonst vielleicht mal dieses Docker Setup probieren GitHub - shopwareLabs/shopware-docker: A docker setup ready for shopware development

Viele Grüße aus Schöppingen

cool Michael Telgmann

1 „Gefällt mir“

Hallo Michael, vielen Dank für deine Antwort.

Ich habe den Unterschied zwischen shopware und shopwareLabs nicht verstanden (zugegeben, ich verstehe ihn immer noch nicht), aber bin anscheinend irgendwie dort gelandet und dachte aufgrund der anderen Repositories dort, dass dies der offizielle GitHub-Name ist.

Habe gerade dasselbe Schema mal mit dem shopware/shopware Repository ausprobiert, ich habe dort dasselbe Problem. Habe ich auch erwartet, denn shopwareLabs/shopware ist durchaus ein aktueller Fork von shopware/shopware und die dev-ops files sind dieselben.

Ich habe es nun mal mit shopware-docker versucht. Hier liegt das Problem darin, dass z.B. die psh.phar nicht Windows-Kompatibel ist.

PS C:\Projekte\shopware-docker> php psh.phar docker:start

###################
Starting Execution of ‚docker:start‘ (‚dev-ops/docker/actions/start.sh‘)

(1/6) Starting
> echo „COMPOSE_PROJECT_NAME: ${COMPOSE_PROJECT_NAME}“
        „COMPOSE_PROJECT_NAME: ${COMPOSE_PROJECT_NAME}“

(2/6) Starting
> dev-ops/docker/containers/scriptcreator.sh
        Der Befehl „dev-ops“ ist entweder falsch geschrieben oder
        konnte nicht gefunden werden.

Execution aborted, a subcommand failed!

Klar schlagen die Commands fehl, das ist bash-Syntax. Ich nutze die PowerShell.

Ich habe dann versucht, die docker-compose file des Repositories mit docker-compose up zu starten, was ebenfalls mit einem Fehler fehlschlägt (Ich habe das Command zwei mal aufgerufen, beim zweiten Mal mit dem --build Flag, im Output ist das bauen der Container nicht zu sehen, hat aber bis zum Punkt des Fehlers grundsätzlich funktioniert):

PS C:\Projekte\shopware-docker> docker-compose up --build
Building app_mysql
Step 1/9 : FROM mysql:5.7
 —> 43b029b6b640
Step 2/9 : RUN apt-get update   && apt-get install --no-install-recommends -y      vim      netcat-openbsd
 —> Using cache
 —> d76c88d3b94f
Step 3/9 : ADD dev.cnf /etc/mysql/conf.d/dev.cnf
 —> Using cache
 —> e9ce0cc19d8f
Step 4/9 : ADD remote-access.cnf /etc/mysql/conf.d/remote-access.cnf
 —> Using cache
 —> dba1f02e45d6
Step 5/9 : ADD performance-schema.cnf /etc/mysql/conf.d/performance-schema.cnf
 —> Using cache
 —> 0d2a05acbafc
Step 6/9 : COPY createuser.sh /tmp/createuser.sh
ERROR: Service ‚app_mysql‘ failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder479616573/createuser.sh: no such file or directory

 

Ist Linux zwingend notwendig? Ich nutze kein Mingw o.ä., aber ich nutze das WSL. Ich kann aber innerhalb des WSLs nicht noch mal docker installieren. Es ist natürlich schade, dass die Prozedur nicht plattform-unabhängig umgesetzt wurde.

 

Hast du eventuell noch einen weiteren Lösungsansatz? Ansonsten versuche ich es jetzt gerade mit dem shopware/composer-project Repository und composer create-project, wo es allerdings leider keine von euch vordefinierte docker-compose File gibt, was schade ist, denn die muss ich mir dann nun selbst zusammenbauen und erhalte eure Updates dafür auch nicht. Ich kann dann außerdem nicht mit einem Fork arbeiten und eure Changes nicht einfach mergen.

Vielen Dank noch mal für die Unterstützung,

Grüße aus Berlin,

Torben

Ist Linux zwingend notwendig? Ich nutze kein Mingw o.ä., aber ich nutze das WSL. Ich kann aber innerhalb des WSLs nicht noch mal docker installieren. Es ist natürlich schade, dass die Prozedur nicht plattform-unabhängig umgesetzt wurde.

Ja im moment ist Linux zwingend notwendig. Aus dem ganz einfachen Grund das kein Backend-Entwickler von uns Windows verwendet.

Wenn Du das fixen möchtest kannst Du gerne ein PR dafür erstellen!

Gruß, Thomas