Entwicklungsumgebung/Fehlerhandbuch: Unterschied zwischen den Versionen

Abschnitt "Dockerfehler" komplettiert
(Erstentwurf)
 
(Abschnitt "Dockerfehler" komplettiert)
Zeile 1: Zeile 1:
Während der Installation der Programme oder Einrichtung der Testumgebung kann es zu diversen Fehlern und Meldungen kommen. Im Folgenden sind bereits bekannte Meldungen aufgelistet, die bei einer schnellen Behebung helfen sollen.
Während der Installation der Programme oder Einrichtung der Testumgebung kann es zu diversen Fehlern und Meldungen kommen. Im Folgenden sind bereits bekannte Meldungen aufgelistet, die bei einer schnellen Behebung helfen sollen.
Fehlerkategorien:
* [[#Fehlermeldungen während der Paketinstallation|Fehlermeldungen während der Paketinstallation]]
* [[#Fehlermeldungen in Zusammenhang mit der Dockerumgebung|Fehlermeldungen in Zusammenhang mit der Dockerumgebung]]
* [[#Fehlermeldungen beim Zugriff auf die Datenbank|Fehlermeldungen beim Zugriff auf die Datenbank]]
* [[#Fehlermeldungen beim Zugriff auf die Testserverdomain|Fehlermeldungen beim Zugriff auf die Testserverdomain]]
__TOC__


== Fehlermeldungen während der Paketinstallation ==
== Fehlermeldungen während der Paketinstallation ==
Zeile 9: Zeile 19:


== Fehlermeldungen in Zusammenhang mit der Dockerumgebung ==
== Fehlermeldungen in Zusammenhang mit der Dockerumgebung ==
==== Fehler “starting opencaching-webserver .. error” oder “Starting webserver ... error” ====
Vermutlich läuft im Hintergrund bereits ein anderer Webservice auf Port 80.
Prüfen kann man das mit:
netstat -tanp | grep :80
Zum Beispiel ein apache2-Webserver kann gestoppt werden mit:
sudo systemctl stop apache2
Damit der apache2 nach einem Rechnerneustart nicht erneut aktiviert wird, kann man ihn generell deaktivieren:
sudo systemctl disable apache2
Alternativ lässt sich auch eine [[https://docs.docker.com/compose/extends/|Override-Datei]] für die betroffenen Ports verwenden, was allerdings weitere Komplikationen mit sich führen kann (wie beispielsweise eine nicht funktionierende OKAPI). Aus diesem Grund sollte nach Möglichkeit das Stoppen der Standard-Services für Apache und einen Datenbank-Server vorgezogen werden.
==== Fehler “W: GPG error: https://dl.yarnpkg.com/debian stable InRelease: The following signatures were invalid: EXPKEYSIG“ ====
Nach dem Ausführen von ./psh.phar docker:start kommt der Fehler. Hier ist das Zertifikat veraltet. Folgender Befehl löscht das Docker-Image.
docker-compose build --pull
Mit einen erneuten ./psh.phar docker:start läuft es wieder durch.
==== Fehler “ERROR: for opencaching-mariadb  Cannot start service mariadb: driver failed programming external connectivity on endpoint opencaching-mariadb [..] Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use” ====
Wenn beim docker:start diese Fehlermeldung kommt, läuft im Hintergrund bereits ein anderer Webservice (z.B. mysql) auf Port 3306.
Prüfen kann man das mit:
netstat -tanp | grep :3306
Zum Beispiel ein mysql-Webserver kann gestoppt werden mit:
sudo mysqladmin -u root shutdown
==== Fehler "The stream or file "/application/htdocs/var/logs/dev/dev.log" could not be opened: failed to open stream: Permission denied" oder ähnlich ====
Hier scheint der Webserver keine Zugriffsberechtigung auf bestimmte Pfade/Dateien zu haben. Von einem Ändern der Zugriffsberechtigungen, z. B. mittels sudo chmod -R 777 ./var/log, sollte aus Sicherheitsgründen aber Abstand genommen werden.
Helfen kann, die Befehlsfolge
./psh.phar docker:ssh
./psh.phar docker:init
exit
ein weiteres Mal auszuführen.
Falls dies weiterhin keinen Erfolg bringt, können folgende Schritte zum Ändern der Zugriffsberechtigungen angewandt werden:
# Ermitteln der ID des Containers oc-server3_php-fpm mittels sudo docker ps.
# Öffnen einer Shell im Container: sudo docker exec -it 45b6e4994fac /bin/bash, wobei 45b6e4994fac die ID des Containers ist.
# In der Container-Shell chmod -R 777 /application/htdocs/var/logs/dev/ ausführen.
# Die Container-Shell regulär mittels exit verlassen.
==== Host-Mismatch bei Aufruf der OKAPI mit Port-Override ====
Falls in einer Override-Datei Ports überschrieben werden (siehe oben), funktioniert die OKAPI möglicherweise nicht richtig - stattdessen erscheint ein Hinweis auf einen Port-Mismatch. Dies kann auf folgende Art und Weise behoben werden:
# Ermitteln der ID des Containers ''oc-server3_php-fpm'' mittels ''sudo docker ps''.
# Öffnen einer Shell im Container: ''sudo docker exec -it 45b6e4994fac /bin/bash'', wobei 45b6e4994fac die ID des Containers ist.
# Im Container einen Editor installieren, beispielsweise nano. Da der Container auf Ubuntu basiert, funktioniert dies mittels ''apt-get update && apt-get install nano''.
# Die passende Konfigurationsdatei mittels des Editors im Container öffnen, beispielsweise mittels ''nano /application/htdocs/config2/settings.inc.php.''
# Setzen von ''$dev_baseurl = 'http://docker.team-opencaching.de:2200';'' und anschließendes Speichern der Datei. Hierbei ist 2200 der Port, der statt Port 80 für den Webserver in der Override-Datei konfiguriert worden ist.
==== Während docker:init kommt es im Abschnitt (3/31) zu einer Meldung “> mysql -uroot -proot -hmariadb -e "DROP DATABASE IF EXISTS opencaching" ERROR 2005 (HY000): Unknown MySQL server host 'mariadb' (-3).“ ====
Abhilfe: ''./psh.phar docker:init'' darf nicht außerhalb des Dockercontainers aufgerufen werden.
==== Während docker:init kommt es im Abschnitt (13/31) zu einer Meldung “PHP Fatal error: .. __toString() must not throw an exception ..“ ====
Die Ursache ist nicht bekannt. Hier hilft aktuell nur ein Workaround, in dem die Exception im Script auskommentiert wird.
Hierzu in der Datei ''../htdocs/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php'' die Zeile 236 ''throw new AutoWiringFailedException'' auskommentieren. Die Datei ist allerdings erst nach dem Ausführens von docker:init vorhanden.
Siehe auch Ticket: [[https://opencaching.atlassian.net/browse/OCC-90|OCC-90: Exception error during docker:init]]
==== Docker Services neu initialisieren, z.B. bei “''W: GPG error:  stable InRelease: The following signatures were invalid: EXPKEYSIG 23E7166788B63E1E Yarn Packaging <yarn@dan.cx>''“ ====
Treten während eines docker:init neue, merkwürdige und nicht näher spezifizierbare Fehler auf, kann es helfen, die Dockercontainer neu zu initialisieren mittels:
docker-compose build --pull
==== z.B. bei Update auf Symfony 5.2 kommt während docker:start-clean der Fehler ''”mv: cannot stat '/root/.symfony/bin/symfony': No such file or directory Service 'webserver' failed to build: The command '/bin/sh -c mv /root/.symfony/bin/symfony /usr/local/bin/symfony' returned a non-zero code: 1"'' ====
In diesem Fall in der Datei ''docker/httpd/Dockerfile'' die fehlerverursachende Zeile
  RUN mv /root/.symfony/bin/symfony /usr/local/bin/symfony
auskommentieren und docker:start-clean erneut laufen lassen.
==== Während docker:start-clean: ''"\Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain()" not found'' ====
Dies ist ein Fehler in einem der ''doctrine/*'' Pakete (vermutlich ''doctrine/persistence'') in bestimmten Paketversionen. Hier hilft, die Datei ''/htdocs/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml'' Zeile 32 zu editieren:
<parameter key="doctrine.orm.metadata.driver_chain.class">Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain</parameter>
zu
<parameter key="doctrine.orm.metadata.driver_chain.class">Doctrine\Persistence\Mapping\Driver\MappingDriverChain</parameter>
Allerdings muss dies zum richtigen Zeitpunkt passieren. Nachdem ''docker:start-clean'' aufgerufen wurde, kurz warten, bis die Pakete heruntergeladen wurden und noch bevor Abschnitt 13/32 anfängt, muss die Datei korrigiert und gespeichert worden sein.
==== Meldung “DEPRECATED: The legacy builder is deprecated and will be removed in a future release. Install the buildx component to build images with [[https://docs.docker.com/go/buildx/|BuildKit]] ====
Der Docker build Prozess wurde geändert. Die bisherige Methode wurde ab Dockerversion 23 als “deprecated” markiert und wird in einer zukünftigen Version entfernt. Siehe [[https://docs.docker.com/engine/deprecated/#legacy-builder-for-linux-images|Deprecated Engine Features]]
==== Meldung “ERROR: BuildKit is enabled but the buildx component is missing or broken.“ ====
Docker Buildkit/buildx soll verwendet werden (DOCKER_BUILDKIT=1), wurde aber nicht installiert.
Abhilfe: Buildkit/buildx Komponente installieren. Vorher müssen aber einige bereits installierte Pakete entfernt werden. Je nach OS gibt es unterschiedliche Anweisungen und Installationswege, siehe hier: [[https://docs.docker.com/engine/install/|Install Docker Engine]]
==== Während docker:start-clean: ''"Browserslist: caniuse-lite is outdated."'' ====
Scheinbar wird die “browserslist” nicht automatisch aktualisiert. (Grund? k.A.)
Zum manuellen Update im Docker:ssh eingeben:
npx browserslist@latest --update-db
bzw.
npx update-browserslist-db@latest




Zeile 14: Zeile 129:
==== Fehlermeldung “ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)” ====
==== Fehlermeldung “ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)” ====
Es wurde vergessen, den Namen der Datenbank in der Kommandozeile zu übergeben.
Es wurde vergessen, den Namen der Datenbank in der Kommandozeile zu übergeben.
  <nowiki>mysql -uroot -proot -hmariadb opencaching</nowiki>
  mysql -uroot -proot -hmariadb opencaching




Zeile 64: Zeile 179:




=== Es kann nicht auf die Domains docker.team-opencaching.de oder try.docker.team-opencaching.de zugegriffen werden. ===
==== Es kann nicht auf die Domains docker.team-opencaching.de oder try.docker.team-opencaching.de zugegriffen werden. ====
Normalerweise sollte der Zugriff nach Installation der Testumgebung automatisch funktionieren. Sollte das nicht der Fall sein, kann mittels Anpassung der hosts-Datei ein Workaround geschaffen werden:
Normalerweise sollte der Zugriff nach Installation der Testumgebung automatisch funktionieren. Sollte das nicht der Fall sein, kann mittels Anpassung der hosts-Datei ein Workaround geschaffen werden:
  <nowiki>127.0.0.1 docker.team-opencaching.de
  <nowiki>127.0.0.1 docker.team-opencaching.de
167

Bearbeitungen