Dockerfile zur Anzeige einer Statischen Website

  • Hi!

    Kurz vorweg. Ich stehe beim Bau von Docker-Containern noch ziemlich am Anfang und habe mich mit dem Thema Webserver auch schon ewig nicht mehr beschäftigt. Trotzdem möchte ich gerne ein paar Dinge ausprobieren und dazu gehört unter anderem, eine einfache statische Website in einem Docker-Container anzeigen zu lassen. Dazu habe ich bereits jede Menge Anleitungen und YouTube-Videos konsumiert.

    Alle für mich relevanten Anleitungen haben dabei eins gemeinsam. Sie kopieren innerhalb des Dockerfile eine selbst erstellte index.html nach /usr/share/nginx/html. Das geschieht über diesen Befehl

    Code
    COPY index.html /usr/share/nginx/html

    Das Dumme ist nur, das nach dem Bau und Start des Containers mir anstatt meiner eigenen index.html, die Willkommensseite von Nginx angezeigt wird, welche vermutlich unter /var/www/html/index.nginx-debian.html liegt. Änder’ ich jedoch den Pfad im Dockerfile von /usr/share/nginx/html auf /var/www/html erhalte ich als Antwort ein "403 Forbidden".

    Kann mir vielleicht jemand erklären, was genau ich falsch mache? Anbei noch mein Dockerfile. Zuvor möchte ich noch erwähnen, das ich das alles im Vorfeld auch mit dem gängigen Image nginx:alpine getestet habe, jedoch mit dem gleichen Ergebnis. Da ich den Container aber ausschließlich auf einem UGREEN-NAS laufen lassen möchte und in meinen Kopf noch weitere Visionen herumschwirren, habe ich zunächst ein debian:bookworm-slim Image verwendet und nginx in einem weiteren Schritt nachinstalliert.

    Ich würde mich wirklich sehr freuen, wenn mir hierbei jemand helfen könnte.

    Tommes

    FRITZ!Box 5590 Fiber | UniFi Express 7 | 2,5-GBit-LAN & Wi-Fi 7
    DXP2800 - 1TB Crucial P310 NVMe RAID1 - 2TB Crucial MX500 SSD RAID1 - 16 GB Crucial CT16G56C46S5 (5600Mhz)
    DS224+ 3TB WD Red HDD RAID1 18GB Ram | DS124 1TB Samsung 870 EVO SSD
    Linux Mint | Ubuntu-Server | Windows | iOS | iPadOS
    UGREEN.FORUM/Filebase | Synology-forum/Add-ons | GitHub.com/toafez

  • Ich bin kein Docker Kenner, aber basierend auf anderen Linux Erfahrungen:

    hast Du mal versucht bei dem copy Befehl den kompletten absoluten Source Pfad des eigenen index.html anzugeben?

  • Die index.html landet am richtigen Ort. Ich kann mich ja auf die Konsole des Containers aufschalten und nachsehen. Daran liegt es jedenfalls nicht, aber danke für den Tipp

    FRITZ!Box 5590 Fiber | UniFi Express 7 | 2,5-GBit-LAN & Wi-Fi 7
    DXP2800 - 1TB Crucial P310 NVMe RAID1 - 2TB Crucial MX500 SSD RAID1 - 16 GB Crucial CT16G56C46S5 (5600Mhz)
    DS224+ 3TB WD Red HDD RAID1 18GB Ram | DS124 1TB Samsung 870 EVO SSD
    Linux Mint | Ubuntu-Server | Windows | iOS | iPadOS
    UGREEN.FORUM/Filebase | Synology-forum/Add-ons | GitHub.com/toafez

  • Hallo Tommes ,

    kann es sein dass die Datei /usr/share/nginx/html/index.html eine falsche Berechtigung (Owner/Group) im Container hat?

    Ggf. baue in Deinem buildfile noch ein

    RUN chown <user>:<group> /usr/share/nginx/html/index.html und

    RUN chmod <wasauchimmer> /usr/share/nginx/html/index.html

    nach dem COPY ein.

    Wobei Du vielleicht ermal nach dem Start des Containers Die ansehen musst unter welchen User der NGINX läuft.


    Viele Grüße

    Mein Equipment
    UGREEN DXP 6800 Pro | RAM: 64GB Crucial 4800MHz (CT2K16G48C40S5) | NVME: 2x Lexar 790NM 4TB | HDD: 4x Toshiba MG11 24TB | FAN: 2x Noctua NF-A9 PWM | OS: UGOS | USV: CyberPower Advanced PFC Sinewave, 1350VA mit RMCARD205
    QNAP TS-253B | RAM: 16GB | HDD: 2x Seagate EXOS X16 16TB, 2x Seagate EXOS X10 10TB | FAN: 2x Noctua NF-A9 PWM | OS: OMV | USV: Eaton Ellipse PRO, 1200VA
    NET: Mikrotik CRS309-1G-8S+IN, CRS305-1G-4S+IN | AVM FB5690PRO | Zyxel 2x NWA130BE, XMG1915-10E | NICGIGA 2x S25-0801-M
  • Hi Tommes,
    ich nehme an du hast das hier schon gelesen? Erstes oberes Drittel, Kapitel Adding Custom HTML.

    How to Use the NGINX Docker Official Image | Docker

    VG Willi

  • Jerry Ich habe das grade mal kontrolliert. Zunächst der Pfad zur Willkommensseite von Nginx, die mir ständig angezeigt wird, wobei ich nicht sicher bin, das es genau diese Datei ist, die aufgerufen wird.

    Code
    root@e4afa2af1978:/var/www/html# ls -la
    total 4
    drwxr-xr-x 1 root root  46 May 18 06:51 .
    drwxr-xr-x 1 root root   8 May 18 06:51 ..
    -rw-r--r-- 1 root root 615 May 18 06:51 index.nginx-debian.html

    Und hier der Pfad zur index.html, welche ich über das Dockerfile in den Container geladen habe.

    Code
    root@e4afa2af1978:/usr/share/nginx/html# ls -la
    total 4
    drwxr-xr-x 1 root root  20 May 18 07:07 .
    drwxr-xr-x 1 root root   8 May 18 06:51 ..
    -rwxrwx--- 1 root root 138 May 18 06:49 index.html

    Wie du siehst, läuft scheinbar alles als root.

    Willi Danke für den Link. Wenn ich genau an diese Anleitung halte und im Abschnitt "Build Custom NGINX Image" sowohl das zweizeilige Dockerfile sowie eine einfache index.html erstelle, daraus ein Image baue und den Container starte, also genauso wie in der Anleitung vorgegeben, außer das ich Port 8088 auf 80 umleite, erhalte ich beim Aufruf der Seite ein "403 Forbidden". Das ist doch bescheuert. Irgendwas übersehe ich doch bei dem ganzen Quatsch.

    Vielleicht könnte das jemand bei sich ausprobieren um zu schauen, ob ihr auf das gleiche Ergebnis kommt. Das wäre total klasse.

    FRITZ!Box 5590 Fiber | UniFi Express 7 | 2,5-GBit-LAN & Wi-Fi 7
    DXP2800 - 1TB Crucial P310 NVMe RAID1 - 2TB Crucial MX500 SSD RAID1 - 16 GB Crucial CT16G56C46S5 (5600Mhz)
    DS224+ 3TB WD Red HDD RAID1 18GB Ram | DS124 1TB Samsung 870 EVO SSD
    Linux Mint | Ubuntu-Server | Windows | iOS | iPadOS
    UGREEN.FORUM/Filebase | Synology-forum/Add-ons | GitHub.com/toafez

  • Nachtrag.

    Selbst wenn ich den nachfolgenden Befehl aus der Anleitung ausführe und im Vorfeld ebenfalls einen Unterordner mit dem Namen site-content erstell und die index.html dorthin verschoben habe, bekomme ich ein "403 Forbidden"

    Code
    docker run -it --rm -d -p 8088:80 --name web -v ~/site-content:/usr/share/nginx/html nginx

    Das ist doch zum Haare raufen. Wieso wird mir zwar die Ngnix Willkommensseite angezeigt, aber meine eigene Seite nicht. Das kann doch nicht am Browser liegen, oder? Teste ich gleich mal...

    Gleiches Ergebnis im Safari Browser.

    FRITZ!Box 5590 Fiber | UniFi Express 7 | 2,5-GBit-LAN & Wi-Fi 7
    DXP2800 - 1TB Crucial P310 NVMe RAID1 - 2TB Crucial MX500 SSD RAID1 - 16 GB Crucial CT16G56C46S5 (5600Mhz)
    DS224+ 3TB WD Red HDD RAID1 18GB Ram | DS124 1TB Samsung 870 EVO SSD
    Linux Mint | Ubuntu-Server | Windows | iOS | iPadOS
    UGREEN.FORUM/Filebase | Synology-forum/Add-ons | GitHub.com/toafez

  • Möglicherweise bringt dich das hier weiter? Ab Minute ~ 06:30...

    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

  • Irgendwie bringt mich das alles nicht weiter. Es nervt grade nur ziemlich, da ich eigentlich nicht damit gerechnet habe, gleich zu Beginn auf solch unlösbare Probleme zu stoßen, wo doch eigentlich keine Probleme zu erwarten waren.

    Ich muss mich dann doch weiter in das Thema Docker, Nginx und Webserveebetrieb reinfuchsen um zu verstehen, was da vor sich geht. Für den Moment wäre für mich nur ganz nett zu erfahren, ob das nur bei mir so ist, oder ob ihr auf die gleichen Probleme stößt. Vielleicht mag das ja wirklich mal jemand testen wollen.

    Ich geh mal eine Runde Schaukeln, weil das meine Nerven beruhigt und dann geht’s weiter…

    FRITZ!Box 5590 Fiber | UniFi Express 7 | 2,5-GBit-LAN & Wi-Fi 7
    DXP2800 - 1TB Crucial P310 NVMe RAID1 - 2TB Crucial MX500 SSD RAID1 - 16 GB Crucial CT16G56C46S5 (5600Mhz)
    DS224+ 3TB WD Red HDD RAID1 18GB Ram | DS124 1TB Samsung 870 EVO SSD
    Linux Mint | Ubuntu-Server | Windows | iOS | iPadOS
    UGREEN.FORUM/Filebase | Synology-forum/Add-ons | GitHub.com/toafez

  • Jetzt wird`s lustig.

    Ich habe mich diesmal strickt an diese Anleitung gehalten, mit dem gleichen Ergebnis. Ich erhalte am Ende ein...

    This image is exclusive to our members!
    Please log in or register for free to view graphics and attachments.

    Wenn ich die Schritte nach der gleichen Anleitung auf meiner Synology DS224+ ausführe, funktioniert der Remmel komischerweise. Denn in dem Fall wird mir der Inhalt der index.html angezeigt...

    This image is exclusive to our members!
    Please log in or register for free to view graphics and attachments.

    Demnach muss das Problem irgendwie mit OGOS Pro bzw. dem installierten Docker-System zusammenhängen, anders kann ich mir das nicht erklären. Die Frage ist jetzt nur, wo anfangen zu suchen.

    FRITZ!Box 5590 Fiber | UniFi Express 7 | 2,5-GBit-LAN & Wi-Fi 7
    DXP2800 - 1TB Crucial P310 NVMe RAID1 - 2TB Crucial MX500 SSD RAID1 - 16 GB Crucial CT16G56C46S5 (5600Mhz)
    DS224+ 3TB WD Red HDD RAID1 18GB Ram | DS124 1TB Samsung 870 EVO SSD
    Linux Mint | Ubuntu-Server | Windows | iOS | iPadOS
    UGREEN.FORUM/Filebase | Synology-forum/Add-ons | GitHub.com/toafez

  • Oh man, ich glaub’ ich hab's und Jerry hatte es bereits vor Stunden angedeutet...

    kann es sein dass die Datei /usr/share/nginx/html/index.html eine falsche Berechtigung (Owner/Group) im Container hat?

    ... und nachdem ich folgendes in das Dockerfile eingefügt hatte...

    Code
    # Set permissions to website-content
    RUN chmod 755 /usr/share/nginx/html
    RUN chmod 644 /usr/share/nginx/html/*

    ... hat's dann endlich funktioniert. Was für eine schwere Geburt. Danke Jerry

    FRITZ!Box 5590 Fiber | UniFi Express 7 | 2,5-GBit-LAN & Wi-Fi 7
    DXP2800 - 1TB Crucial P310 NVMe RAID1 - 2TB Crucial MX500 SSD RAID1 - 16 GB Crucial CT16G56C46S5 (5600Mhz)
    DS224+ 3TB WD Red HDD RAID1 18GB Ram | DS124 1TB Samsung 870 EVO SSD
    Linux Mint | Ubuntu-Server | Windows | iOS | iPadOS
    UGREEN.FORUM/Filebase | Synology-forum/Add-ons | GitHub.com/toafez

  • also ich habe das mal eben auf meiner DXP als root getestet. Die Dateien habe ich unter /root/site-content abgelegt.

    Das weiter (als root):

    Code
    docker build -t testnginx .
    docker run -i -t -p 1234:80 testnginx

    Von meinem PC kann ich dann die URLs

    http://<ip.dxp>:1234 und

    This image is exclusive to our members!
    Please log in or register for free to view graphics and attachments.

    http://<ip.dxp>:1234/api

    This image is exclusive to our members!
    Please log in or register for free to view graphics and attachments.

    aufrufen, kein Problem.

    Ich habe zwei Änderungen gemacht.


    1. nginx.conf

    localhost durch die der DXP IP ersetzt

    2. Dockerbuild

    RUN chmod +r /usr/share/nginx/html/*

    hinzugefügt.

    Das Problem liegt an den Berechtigungen auf den NAS, die Dateien sind wie folgt angelegt:

    Code
    root@ares:~/site-content# ll
    total 12
    -rw------- 1 jerry admin 433 May 18 18:49 Dockerfile
    -rw------- 1 jerry admin 286 May 18 17:50 index.html
    -rw------- 1 jerry admin 235 May 18 18:32 nginx.conf

    Ich habe sie mal eben über die Weboberfläche in heim Home Verzeichnis kopiert und dann per SSH die als root umkopiert.

    Die Berechtigungen werden mit dem COPY im Dockerfile durch docker build in das Image übernommen.

    Daher die Korrektur nach dem COPY und alles läuft.

    Viele Grüße

    Files

    Mein Equipment
    UGREEN DXP 6800 Pro | RAM: 64GB Crucial 4800MHz (CT2K16G48C40S5) | NVME: 2x Lexar 790NM 4TB | HDD: 4x Toshiba MG11 24TB | FAN: 2x Noctua NF-A9 PWM | OS: UGOS | USV: CyberPower Advanced PFC Sinewave, 1350VA mit RMCARD205
    QNAP TS-253B | RAM: 16GB | HDD: 2x Seagate EXOS X16 16TB, 2x Seagate EXOS X10 10TB | FAN: 2x Noctua NF-A9 PWM | OS: OMV | USV: Eaton Ellipse PRO, 1200VA
    NET: Mikrotik CRS309-1G-8S+IN, CRS305-1G-4S+IN | AVM FB5690PRO | Zyxel 2x NWA130BE, XMG1915-10E | NICGIGA 2x S25-0801-M
  • Oh man, ich glaub’ ich hab's und Jerry hatte es bereits vor Stunden angedeutet...

    sorry, ich war anderweitig beschäftigt. Leider kam meine Antwort von eben zu spät ;)

    Aber es klappt :)

    Mein Equipment
    UGREEN DXP 6800 Pro | RAM: 64GB Crucial 4800MHz (CT2K16G48C40S5) | NVME: 2x Lexar 790NM 4TB | HDD: 4x Toshiba MG11 24TB | FAN: 2x Noctua NF-A9 PWM | OS: UGOS | USV: CyberPower Advanced PFC Sinewave, 1350VA mit RMCARD205
    QNAP TS-253B | RAM: 16GB | HDD: 2x Seagate EXOS X16 16TB, 2x Seagate EXOS X10 10TB | FAN: 2x Noctua NF-A9 PWM | OS: OMV | USV: Eaton Ellipse PRO, 1200VA
    NET: Mikrotik CRS309-1G-8S+IN, CRS305-1G-4S+IN | AVM FB5690PRO | Zyxel 2x NWA130BE, XMG1915-10E | NICGIGA 2x S25-0801-M
  • Vielen Dank nochmal für deine Ausführungen.

    Wie gesagt, Docker ist für mich noch neu und für mich ist völlig unverständlich, warum das Anpassen der Ordner- und/oder Dateirechte in keiner Anleitung, die ich gelesen oder gesehen habe, erwähnt wird. Klar, im Nachhinein ist das schon logisch, aber da kommt doch erstmal kein Mensch drauf. Vor allem, wenn man dann zunächst herausfinden muss, welche Rechte und/oder Eigentümer überhaupt gefordert sind. Daher konnte ich mit dem hier...

    RUN chown <user>:<group> /usr/share/nginx/html/index.html und

    RUN chmod <wasauchimmer> /usr/share/nginx/html/index.html

    ... auch nicht wirklich viel anfangen. Aber das soll jetzt keine Schuldzuweisung sein. Welchen Benutzer/Eigentümer ich heranziehen soll, weiß ich aber immer noch nicht. Vermutlich www-data oder sowas in der Art. Wie gesagt, Webserver aufsetzten gehört nicht zu meiner Kernkompetenz.

    Aber egal... es läuft ja erstmal und die nächsten Probleme lassen sicherlich nicht lange auf sich warten. Es könnte also durchaus sein, das ich nochmal auf dich zurückkommen werde. Bis hierhin sage ich schon mal Danke.

    Tommes

    FRITZ!Box 5590 Fiber | UniFi Express 7 | 2,5-GBit-LAN & Wi-Fi 7
    DXP2800 - 1TB Crucial P310 NVMe RAID1 - 2TB Crucial MX500 SSD RAID1 - 16 GB Crucial CT16G56C46S5 (5600Mhz)
    DS224+ 3TB WD Red HDD RAID1 18GB Ram | DS124 1TB Samsung 870 EVO SSD
    Linux Mint | Ubuntu-Server | Windows | iOS | iPadOS
    UGREEN.FORUM/Filebase | Synology-forum/Add-ons | GitHub.com/toafez

  • Neuer Tag. Neues Glück.

    Ich habe weitere Erkenntnisse gewinnen können, weil es nach unserer gestrigen Diskussion am Ende immer noch nicht so recht klappen wollte. Ich meine jetzt auch zu wissen, was genau ich falsch... oder besser gesagt... ich gestern ständig durcheinandergewürfelt habe.

    Installiert man nginx:latest nativ oder als nginx:alpine , dann liegt der Website-Content unter /usr/share/nginx/html und <user>:<group> hören dabei auf nginx:nginx

    Installiert man jedoch wie ich ein debian:bookworm-slim und installiert nginx über den Befehl apt install nginx -y nach, dann liegt der Website-Content nicht mehr unter /usr/share/nginx/html sondern unter /var/www/html und <user>:<group> hört auf www-data:www-data , wobei ich diese Angabe im Dockerfile vorerst auskommentiert habe, da es auch ohne Zuweisung funktioniert. Ebenfalls benötigt man theoretisch auch keine Änderungen der Datei- und Verzeichnisrechte mehr. Es läuft einfach, wobei die index.html im Container das Recht 700 erhält, 644 aber sicherlich zielführender ist.

    Ich habe gestern mit insgesamt drei Containern herumhantiert, nämlich mit nginx:latest , nginx:alpine und debian:bookworm-slim und immer kam etwas anderes heraus. Die Augen geöffnet hat mir am Ende diese Website und seit dem flutscht das aus.

    Also dann.Weiter gehts...

    FRITZ!Box 5590 Fiber | UniFi Express 7 | 2,5-GBit-LAN & Wi-Fi 7
    DXP2800 - 1TB Crucial P310 NVMe RAID1 - 2TB Crucial MX500 SSD RAID1 - 16 GB Crucial CT16G56C46S5 (5600Mhz)
    DS224+ 3TB WD Red HDD RAID1 18GB Ram | DS124 1TB Samsung 870 EVO SSD
    Linux Mint | Ubuntu-Server | Windows | iOS | iPadOS
    UGREEN.FORUM/Filebase | Synology-forum/Add-ons | GitHub.com/toafez

  • Fuck!

    Quote

    Nginx doesn't support CGI by default, so you need to set up extra configuration and modules to run CGI scripts correctly.

    Ahhh... das kann doch nicht wahr sein? Ich möchte am Ende doch eine CGI-Shell-Script ausführen lassen und jetzt lese ich grade, das Nginx das nativ überhaupt nicht unterstützt und man in diesem Fall stattdessen auf Apache oder Lighttpd zurückgreifen soll. Echt jetzt? Ich werd bekloppt. :rolleyes:

    Also alles zurück auf Anfang. ;(;(;(

    Ich könnt <X

    FRITZ!Box 5590 Fiber | UniFi Express 7 | 2,5-GBit-LAN & Wi-Fi 7
    DXP2800 - 1TB Crucial P310 NVMe RAID1 - 2TB Crucial MX500 SSD RAID1 - 16 GB Crucial CT16G56C46S5 (5600Mhz)
    DS224+ 3TB WD Red HDD RAID1 18GB Ram | DS124 1TB Samsung 870 EVO SSD
    Linux Mint | Ubuntu-Server | Windows | iOS | iPadOS
    UGREEN.FORUM/Filebase | Synology-forum/Add-ons | GitHub.com/toafez

  • Soderle... kleines Update!

    Ich habe heute erfolgreich ein debian:bookworm-slim Container mit apache2 und CGI-Shell-Script Unterstützung aufgesetzt. Zu Beginn musste ich CGI Skripte noch über den Browserpfad http://[NAS-IP]:8080/cgi-bin/index.cgi aufrufen, konnte das jedoch durch einen kleinen Eingriff in der /etc/apache2/apache2.conf so korrigieren, das ich das CGI Skript nun einfach über http://[NAS-IP]:8080/index.cgi erreiche.

    Es wird langsam und bin grad voll stolz auf mich :)

    FRITZ!Box 5590 Fiber | UniFi Express 7 | 2,5-GBit-LAN & Wi-Fi 7
    DXP2800 - 1TB Crucial P310 NVMe RAID1 - 2TB Crucial MX500 SSD RAID1 - 16 GB Crucial CT16G56C46S5 (5600Mhz)
    DS224+ 3TB WD Red HDD RAID1 18GB Ram | DS124 1TB Samsung 870 EVO SSD
    Linux Mint | Ubuntu-Server | Windows | iOS | iPadOS
    UGREEN.FORUM/Filebase | Synology-forum/Add-ons | GitHub.com/toafez

Participate now!

Join our community with over 10,000 members!

Register yourself now for free to get full access to all content, graphics, downloads and other exclusive features!