Nextcloud mit Dockerfile hat bei Cron Probleme (gelöst)

Hallo ich hoffe ihr könnt mir helfen.
Bisher habe ich meine Nextclopud mit Portainer aufgesetzt, da Openmediavault jetzt jedoch eine Oberfläche für Compose mit Dockerfiles eingeführt hat wollte ich diese nutzen, um mir die Update Prozedur zu erleichtern.

ich habe den offiziellen Dockerfile besorgt und auf meinem System erstellt. Anschließend die Zeile
image: “nextcloud:apache”

mit den volgenden Zeilen getauscht:
build:
context: “/DockerconfigundDateien/Compose/Nextcloudfile/”
dockerfile: “Dockerfile”

Der Docker Container wurde gezogen startet auch aber wird dabei nie fertig.
Wenn ich meine Nextcloud dann aufrufen möchte wird mir nur angezeigt, dass die Seite nicht aufgerufen werden konnte, weil der zugriff verweigert wurde.

Die Logs des containers zeigen leider auch nur folgende Informationen an:

=> Searching for scripts (*.sh) to run, located in the folder: /docker-entrypoint-hooks.d/before-starting
==> but the hook folder "before-starting" is empty, so nothing to do
2023-07-12 19:36:19,593 CRIT Supervisor is running as root.  Privileges were not dropped because no user is specified in the config file.  If you intend to run as root, you can set user=root in the config file to avoid this message.
crond: crond (busybox 1.30.1) started, log level 0
crond: user:www-data entry:(null)
100001000010000100001000010000100001000010000100001000010000
111111111111111111111111
11111111111111111111111111111111

111111111111
1111111

Wenn ich vom Dockerfile wieder auf das normale Image wechsele ist auch alles wieder ok. Da der Container mit Dockerfile nicht durchstartet kann ich mich leider nicht in den Container schalten und das Terminal bedienen.

Hier ist mein unmodifizierter Dockerfile:

FROM nextcloud:apache
 
RUN set -ex; \
\
apt-get update; \
apt-get install -y --no-install-recommends \
ffmpeg \
ghostscript \
libmagickcore-6.q16-6-extra \
procps \
smbclient \
supervisor \
# libreoffice \
; \
rm -rf /var/lib/apt/lists/*
 
RUN set -ex; \
\
savedAptMark="$(apt-mark showmanual)"; \
\
apt-get update; \
apt-get install -y --no-install-recommends \
libbz2-dev \
libc-client-dev \
libkrb5-dev \
libsmbclient-dev \
; \
\
docker-php-ext-configure imap --with-kerberos --with-imap-ssl; \
docker-php-ext-install \
bz2 \
imap \
; \
pecl install smbclient; \
docker-php-ext-enable smbclient; \
\
# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
apt-mark auto '.*' > /dev/null; \
apt-mark manual $savedAptMark; \
ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \
| awk '/=>/ { print $3 }' \
| sort -u \
| xargs -r dpkg-query -S \
| cut -d: -f1 \
| sort -u \
| xargs -rt apt-mark manual; \
\
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
rm -rf /var/lib/apt/lists/*
 
RUN mkdir -p \
/var/log/supervisord \
/var/run/supervisord \
;
 
COPY supervisord.conf /
 
ENV NEXTCLOUD_UPDATE=1
 
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]

und meine Nextcloud YML, welche ein paar anpassungen brauchte um mit Openmediavault zu laufen. Ich habe mir die Dienste Antminer und WikiJS noch hinzugefügt und ein Netzwerk für die Dienste hinzugefügt diese sollten jedoch keinen Einfluss auf die Nextcloud haben. :

version: "3.6"
services:
 mariadb:
    container_name: "mariadb"  
    image: "mariadb:10.6"  
    command:
      - "--transaction-isolation=READ-COMMITTED"
      - "--log-bin=binlog"
      - "--binlog-format=ROW"
    environment:
      - "MYSQL_DATABASE=nextcloud"
      - "MYSQL_USER=user"
      - "MYSQL_ROOT_PASSWORD=*****"
      - "MYSQL_PASSWORD=******"
    ports:
      - "3306:3306/tcp"
    restart: "always"
    volumes:
      - "/DockerconfigundDateien/mariadb:/var/lib/mysql" 
    networks:
      - "nextcloudmitwiki_default"  


 adminer:
    container_name: "adminer_datenbank_viewer"
    image: "adminer"
    restart: "always"
    ports:
      - "8888:8080"   
    networks:
      - "nextcloudmitwiki_default"  
    depends_on:
      - "mariadb"      

 wiki_js:
    container_name: "wiki_js"
    environment:
      - "DB_TYPE=mariadb"
      - "DB_HOST=mariadb"
      - "DB_PORT=3306"
      - "DB_USER=user"
      - "DB_PASS=*******"
      - "DB_NAME=wiki"
    image: "ghcr.io/requarks/wiki:2"
    ports:
      - "89:3000/tcp"
    restart: "unless-stopped"
    volumes:
      - "/DockerconfigundDateien/WikiJS:/wiki/data/content" 
    networks:
      - "nextcloudmitwiki_default"  
    depends_on:
      - "mariadb"
      
 nextcloud:
    image: "nextcloud:apache" 
    container_name: "nextcloud"
    environment:
      - "MYSQL_PASSWORD=******"
      - "MYSQL_DATABASE=nextcloud"
      - "MYSQL_USER=user"
      - "MYSQL_HOST=mariadb"
    networks:
      - "nextcloudmitwiki_default"
    ports:
      - "870:80"
    restart: "always"
    volumes:
      - "/DockerconfigundDateien/nextcloud2:/var/www/html"
    depends_on:
      - "mariadb"      


networks:
  nextcloudmitwiki_default:
    external: true
    name: "nextcloudmitwiki_default"

Danke für eure Hilfe

hallo @Tagor12 willkommen im Forum :handshake:

deine Config ist für mich recht schwer zu verstehen. Ich empfehle dir schritt für Schritt von einfach nach komplex zu bewegen um das problem direkt zu erkennen. Ich sehe in deine docker-compose nicht direkt einen Fehler… lediglich der host port mapping 870:80 ist nicht üblich… eventuell liegt hier bereits das Problem - Ports unter 1024 sind root vorbehalten…

Das scheint allerdings nicht der Fehler zu sein:

Wen der Fehler am Port liegt müssten das original Image wie auch dein custom Image gleiches Problem haben. Anscheinend gibt’s ein Problem mit dem Dockerfile. Ich würde an deiner Stelle mit dem originales Dockerfile starten und deine Anpassungen schrittweise einfügen - dann siehst du schnell wo das Problem liegt.

Beim “normalen” Docker kannst du mit docker logs %container_name% den Startvorgang im Detail analysieren.

1 Like

Hallo @wwe, Vielen Dank für deine Hilfe.

Ich hatte heute zuerst die drei anderen Versionen der offiziellen Dockerfiles probiert, welche alle liefen und dann ist mir aufgefallen, das in meinem Dockerfile der Full Version die Einrückungen fehlten. Weshalb die fehlte kann ich leider nicht sagen aber jetzt läuft auch die Full Version.

Das die Ports unter 1024 normalerweise root vorbehalten sind ist Interessant, jedoch ist beispielsweise für Pihole ja auch der Port 53 unerlässlich und das wird ja auch sehr gut über Docker eingebunden.

@wwe Ich habe heute noch einmal neu gestartet und meine nextcloud war wieder nicht erreichbar.
Ich bin dann noch einmal alles durchgegangen und die Zeile, die der Nextcloud Probleme bereitet ist diese:
CMD [“/usr/bin/supervisord”, “-c”, “/supervisord.conf”]

Da die Nextcloud aber auch ohne diese Zeile die cron als erledigt anzeigt stellt sich mir auch die Frage, was diese Zeile eigentlich macht?
kannst du mir hier vielleicht helfen?
P.S: dein Tip mit den Logs hat übrigens auch nur meine Logs von oben gezeigt.

supervisord ist für den cron. Es gibt mehrere Wege Cron auszuführen… mit Docker verwendet man normalerweise einen weiteren Container… aber Einige sind damit unzufrieden und deswegen existiert supervisord… ich kann dazu wenig sagen weil ich das nicht nutze nd auch nicht sinnvoll finde…

1 Like

wunderbar, dann passt das bei mir ja vielen Dank für die Aufklärung