NC unter Docker: Datenbank-Fehler

Hallo zusammen,
seit einigen Tagen versuche ich eine Nextcloud neben Jitsi und Bitwarden (alles in Docker-Containern) auf meinem Server zum Laufen zu bekommen.
Auf dem Server läuft Ubuntu 18.04.4 und Nginx als Reverse Proxy.
Alle 3 Anwendungen laufen über Docker-Compose und soweit funktioniert auch alles.
Auf der Setup-Page von Nextcloud kommt es allerdings zu einem Fehler beim einbinden der Datenbank.

Error while trying to create admin user: Failed to connect to the database: An exception occurred in driver: SQLSTATE[HY000] [2002] No such file or directory

Ich habe den Pfad zum Data Directory so gelassen und habe nur db-name, user und Passwort angepasst. localhost ist ebenfalls geblieben.

Meine docker-compose.yml sieht folgendermaßen aus:

version: '3.7'

services:
  db:
image: mariadb
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
  - ./data/db:/var/lib/mysql
environment:
  MYSQL_ROOT_PASSWORD: .....
  MYSQL_PASSWORD: .....
  MYSQL_DATABASE: nextcloud
  MYSQL_USER: nextcloud

  app:
image: nextcloud
restart: always
ports:
  - 8001:80
depends_on:
  - db
environment:
  VIRTUAL_HOST: .....
  OVERWRITEHOST: .....
volumes:
  - ./data/nextcloud:/var/www/html

Ich verstehe nicht ganz wie das mit Pfaden in docker funktioniert weil z.B. bei /var/www nichts gespeichert ist, obwohl in der docker-compose immer die Rede davon ist. Das gleiche mit Datenbanken - wo werden sie erstellt bzw. gespeichert?
Ich hoffe jemand ist in diesem Gebiet erfahrener und kann mir aus der Patsche helfen.
Liebe Grüße
Jonas

was genau soll das aussagen?

volumes:
  - ./data/nextcloud:/var/www/html
  • rechts vom : steht immer der pfad, den du im container siehst.
  • links hast du den pfad auf deinem host.
    wenn links der string mit . oder / beginnt, werden die dateien, dort im file system des host angelegt. bei deinem relative pfad dürfte das dann unterhalb von dem pfad, in dem das docker-compose file liegt.
    ansonsten legt docker irgendwo unterhalb von /var/lib/docker ein verzeichnis _data an.

gibt mal docker inspect app bzw docker inspect db ein. dann werden in dem json alle volumes angezeigt.

was hast du da eingegeben?

btw: wenn du dem nextcloud container ein paar mehr variablen mitgibst, wird die Setup-Page übersprungen und alles automatisch angelegt. :wink:

Hi,

Ich glaube so:
in /var/lib/docker/volumes/[Name_des_Ordners, in dem das docker-compose liegt]/[Name des Volumes}/_data

gruß mrhubber

Danke für eure Antworten, ich habe den Fehler gefunden!!
Statt localhost musste db eingetragen werden.