Zugriff auf MariaDB aus Docker Container

BoxedCube

Benutzer
Mitglied seit
24. Aug 2018
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich experimentiere gerade ein wenig mit Docker auf meiner DS 916+. Ich habe hier keinerlei Erfahrungen, so dass ich davon ausgehe, das ich bei meinem missglückten ersten Testballon schlicht einen Arbeitsschritt übersehen habe. Leider erkenne ich nicht welchen, daher hoffe ich, dass ihr mir helfen könnt.

Ich versuche eine xWiki Conainer zu nutzen. Als Datenbank soll hierbei die bereits ohne Docker auf dem NAS laufende MariaDB verwendet werden.

Folgendes habe ich gemacht:

  • Per Synology Docker GUI das Paket xwiki:latest heruntergeladen.
  • Hieraus einen Container erzeugt.
  • Die Umgebungsvariablen DB_HOST, DB_DATABASE, DB_USER und DB_PASSWORT gesetzt. Hierbei habe ich bei DB_HOST den Port mit angegeben (per : abgetrennt), da ich gerne die MariaDB 10 verwenden möchte.
  • Die Umgebungsvariable xwiki auf mysql_tomcat gesetzt.
  • Den Container direkt im Host Netzwerk angesiedelt.
  • Passende Datenbank nebst user in der MariaDB eingerichtet.

Das ganze war insofern erfolgreich, dass ich den xwiki per Browser erreichen kann. Allerdings präsentiert dieser mir lediglich einen JAVA Stacktrace, da die Anwendung offensichtlich in eine Exception gelaufen ist. Die untersten 4 Einträge in diesem Stacktrace deuten darauf hin, dass die Datenbankverbindung nicht zustande kommt, somit muss ich davon ausgehen, dass es der Anwendung nicht gelingt aus dem Container auf die Datenbank zuzugreifen.
( java.net.UnknownHostException: db => com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure => java.sql.SQLException: Cannot create PoolableConnectionFactory (Communications link failure => org.hibernate.HibernateException: Could not create a DBCP pool. There is an error in the Hibernate configuration file, please review it. )

Was habe ich vergessen um dem Container dies zu ermöglichen?

Vielen dank für eure Unterstützung!

PS: Leider erlaubt es mir die Maximallänge für Beiträge hier nicht den Stacktrace wiederzugeben, was ich gerne getan hätte, falls da jemand mehr herauslesen kann als ich (als jemand der kaum Java Erfahrungen hat).
 

Yippie

Benutzer
Mitglied seit
01. Feb 2011
Beiträge
573
Punkte für Reaktionen
31
Punkte
54
Hallo,
[*]Die Umgebungsvariablen DB_HOST, DB_DATABASE, DB_USER und DB_PASSWORT gesetzt. Hierbei habe ich bei DB_HOST den Port mit angegeben (per : abgetrennt), da ich gerne die MariaDB 10 verwenden möchte.

Hast du Mal versucht DB_PORT in den Umgebungsvariablen, statt per Doppelpunkt getrennt in DB_HOST, anzugeben? Hatte ich nämlich gestern auch erst diesen Fall, als ich LibreNMS, einem Network Monitor System aufgesetzt habe. Port 3306 ist MariaDB 5 und Port 3307 sollte MariaDB 10 sein.
Soweit ich weiß, muss dies jedoch auch der jeweilige Docker-Container unterstützen...

Ach ja noch eins, wie hast du die DB in MariaDB angelegt? Per phpMyAdmin oder über die Kommandozeile auf der Diskstation?
Michael
 

BoxedCube

Benutzer
Mitglied seit
24. Aug 2018
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Hallo Yippie,

danke für deine Antwort.

Ja, DB_PORT hatte ich auch auf gut Glück schon mal probiert, obwohl ich keine entsprechende Doku dazu gefunden habe. Ich habe den Versuch gerade noch mal wiederholt, um Vertipper auszuschließen (aus selben Grund habe ich auch den DB_HOST aus der Config eines Docker freien Dienstes Kopiert ;))

Den Datenbankuser habe ich per phpMyAdmin angelegt und dabei die Option benutzt eine gleichnamige Datenbank mit zu erstellen. Entsprechend hat der user alle Rechte (außer GRANT) auf der Datenbank.
Ich habe das ganze übrigens auch in der MariaDB 5 gemacht und die Portangabe weggelassen (3306 ist ja der Standard Port) leider führte auch das zu keinem Erfolg (zumal ich eigentlich die MariaDB 10 verwenden möchte).

Gruß,
Björn
 

BoxedCube

Benutzer
Mitglied seit
24. Aug 2018
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Hallo,

Bitte Screenshots oder docker-compose.yml Datei posten.

welche Screenshots benötigst du genau? Nach der Datei muss ich mal suchen, dazu komme ich nur leider heute nicht mehr.

environment.jpg

Leider aus dem Bild gescrollt die oben erwähnte xwiki Variable. Beim DB_HOST, habe ich neben der IP auch den lokalen Rechnernamen versucht, beides erfolglos.


Errorlog.jpg
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Danke für den Screenshot und vorallem für die Logs. So kann man sehen was das Problem ist und muss keine Vermutungen anstellen.

https://github.com/xwiki-contrib/docker-xwiki/blob/1617db38480798d515bcef595397e43518150dde/9/mysql-tomcat/xwiki/docker-entrypoint.sh schrieb:
safesed "replaceuser" $DB_USER /usr/local/tomcat/webapps/ROOT/WEB-INF/hibernate.cfg.xml
safesed "replacepassword" $DB_PASSWORD /usr/local/tomcat/webapps/ROOT/WEB-INF/hibernate.cfg.xml
safesed "replacecontainer" $DB_HOST /usr/local/tomcat/webapps/ROOT/WEB-INF/hibernate.cfg.xml
safesed "replacedatabase" $DB_DATABASE /usr/local/tomcat/webapps/ROOT/WEB-INF/hibernate.cfg.xml

https://github.com/xwiki-contrib/docker-xwiki/blob/1617db38480798d515bcef595397e43518150dde/9/mysql-tomcat/xwiki/hibernate.cfg.xml schrieb:
<property name="connection.url">jdbc:mysql://replacecontainer/replacedatabase?useSSL=false</property>
<property name="connection.username">replaceuser</property>
<property name="connection.password">replacepassword</property>

Die Variable DB_HOST ersetzt den Platzhalter "replacecontainer", wodurch nach ersetzen von "replacedatabase" durch DB_DATABASE ein gültiger jdbc-Connection-String erzeugt wird.
IP:port für DH_Host ist valide. Sprich: hier sieht eigentlich alles richtig aus.

-Vermutung: Du hast die Firewall an? Kannst Du sie testweise mal deaktivieren und es erneut versuchen?-

Wie konnte ich nur übersehen, dass dort eine UnknownHostException für "db" angegeben ist. Sieht so aus, als wenn das Entrypoint-Skript die übergebenen Umwelt-Parameter ignoriert!

Welches Imag:Tag verwendest Du den genau?
 

chrisuth

Benutzer
Mitglied seit
16. Mai 2013
Beiträge
53
Punkte für Reaktionen
1
Punkte
8
Hi, habt ihr da nochmal die finalen Einstellungen, mit denen es klappt?
Ich überlege auch XWIKI zu verwenden ...

Danke für jeden Hinweis.
 

87west

Benutzer
Mitglied seit
25. Mrz 2020
Beiträge
38
Punkte für Reaktionen
2
Punkte
14
Servus, ich bin noch ein wenig Laie, was die Dockernutzung angeht und würde sehr gerne xwiki unter docker in der 718 nutzen.
Findet man irgendwo ein howto? Ich such mir gerade einen Wolf.
Danke Euch.
 

linuxdep

Benutzer
Mitglied seit
02. Jan 2009
Beiträge
584
Punkte für Reaktionen
11
Punkte
38
Hi, hast du den DB connect hin bekommen?
Was hst du für eine Netzwerk für deinen Docker benutzt? Docker und Host wollen per se wohl erst mal nicht miteinander reden, soll wohl verhindern, vom Docker auf den Host auszubrechen...
Die Überlegung die vorhandene DB zu nutzen hatte ich auch, aber einfacher ist glaube einen DB Container aufzusetzen und virtuelle Netz zu nutzen, sollte auch schneller sein, zumindest die Netzverbindung.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat