Webserver (HTML, PHP, SQL) als Docker-Image

  • Gibt es einfertiges Image für Docker mit dem ich einen Webserver mit PHP, SQL etc aufsetzen kann?
    Oder lieber als Vm bauen mit Ubuntu?

    Habe nginx als Dock laufen aber finde keine Möglichkeit den Pfad der Seiten zu sehen.
    Bei Synology habe ich einen Webserver installiert und mir nen Order Web mit den ganzen Webseiten gebaut und fertig.
    Soll alles nur im eigenen Netz laufen über die IP der NAS

  • Go to Best Answer
  • Apache, MySQL, PHP gibt es jeweils als Image.

    Du baust dir ein YAML zurecht mit den 3 und entsprechend angepassten Pfaden auf deiner DXP, z.B. (quick&dirty aus ChatGPT heraus, daher ohne Gewähr und ohne es selbst getestet zu haben):

    ... mal auf die Schnelle als Starthilfe, dazu findest du sicher ne Menge mehr oder besserer Informationen auf denen du aufbauen kannst.

    Es gibt auch fertige LAMPs...

    [ DXP4800+ | 2x Samsung 980 Pro 2TB | 4x Seagate IronWolf 24TB | UGOS ]

  • habe ne weile gebraucht um überhaubt zu kapieren wie ich den code aktiv bekomme. Habe die Pfade etc alles hinbekommen.
    Aber er erstellt kein funktionierenden apache Container. Der Rest geht. Aber ohne den Apache bringt es ja gar nichts.

  • Hier testweise:

    Verzeichnisse anlegen:
    mkdir /volume1/docker/mywebsite
    mkdir /volume1/docker/mywebsite/www
    mkdir /volume1/docker/mywebsite/db_data

    Dann z.B. in Portainer "Create Stack" mit dem Namen "mywebsite" und das YAML einfügen:

    Dann noch unter dem www Verzeichnis eine index.php anlegen mit z.B.:

    PHP
    <?php
        echo "Hallo Welt!";
    ?>

    Rechte setzen:

    Code
    sudo chown -R 33:33 /volume1/docker/mywebsite/www
    sudo chmod -R 755 /volume1/docker/mywebsite/www

    Danach aufrufen:

    http://{UGREENIP}:8888

    Und es sollte eine Webseite erscheinen. PHP entsprechend der YAML dann auf Port 8890. Sind alles nur Beispielports und Beispielpfade, die du auf dein System anpassen musst, aber generell sollte das da oben auf allen UGREEN NAS funktionieren.


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

    [ DXP4800+ | 2x Samsung 980 Pro 2TB | 4x Seagate IronWolf 24TB | UGOS ]

    Edited once, last by Mavvy: Ein Beitrag von Mavvy mit diesem Beitrag zusammengefügt. (July 17, 2025 at 10:59 PM).

  • Bekomme es nicht sauber zum laufen.
    Habe es alles angepasst und es läuft als statistisches HTML o.k.

    Nach dem ich die Rechte gesetzt habe kam ich auch zum sehen der Seiten.

    Aber wenn ich eine Wordpress etc aufsetze kommt immer der Fehler:

    Deine PHP-Installation scheint nicht über die von WordPress benötigte MySQL-Erweiterung zu verfügen.

    Bitte überprüfe, ob die PHP-Erweiterung mysqli installiert und aktiviert ist.

  • probiere mal ein anderes Image:

    Code
      web:
       image: webdevops/php-apache:8.4
       container_name: apache_php
       volumes:
         - /volume1/docker/mywebsite/www:/app
       ports:
         - "8888:80"
       depends_on:
         - db

    Änderungen sind:

    image: webdevops/php-apache:8.4 statt image: php:8.2-apache

    und

    /app statt /var/www/html beim Volume/DocRoot

    In dem Image sind dann auch mysqli, pdo und weiterer nützlicher Kram verbaut.

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

    [ DXP4800+ | 2x Samsung 980 Pro 2TB | 4x Seagate IronWolf 24TB | UGOS ]

  • Such im Netz mal nach LAMP oder XAMPP in Verbindung mit Docker Compose bzw. Stack, dann findest du u.a. sowas hier

    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

  • DANKE!

    das war die Lösung. Jetzt nimmt er meine ganze Unterseiten. Dann kann ich erstmal sehen ob alles geht.

  • Moin,

    ich habe mich mal daran versucht, im Docker ebenfalls ein LAMP Server zu installieren.

    Nunja, irgendwie lief es zwischendurch mal, aber für mein Setup unbefriedigend. Ich mußte ständig die Rechte in der Ordnerstruktur anpassen, damit ich zumindest mit dem Apache auf meinen gemountet NAS Verzeichnis komme. Das hielt aber immer nur kurz. ->

    Ich würde gerne über Linux Laptop und (noch) Windows 11 Desktop via VSCode meine PHP Anwendungen weiterentwickeln.

    Alles lokal im Homenetz, nicht von außebn erreichbar.

    Da ich viele php Dateien anlege und lösche, habe ich das Problem mit den Rechten.

    Wenn ich das richtig verstanden habe, läuft der Apache Server im Docker unter dem Besitzer www-run (UID33). Der Admin auf der NAS, mit dem ich den Container erstelle, hat die 1000. Der SMB Nutzer unter Windows hat 1006.

    Unter Windows arbeite ich unter Laragon, da starte ich Lamp, und kann direkt im www Ordner arbeiten.


    Nun bin ich an dem Punkt: Weiter mit Docker beschäftigen, und versuchen das irgendwie hinzubekommen, oder Linux in einer VM zu installieren und dann hier einen Server aufsetzen. Wobei ich dann nicht weiß, ob ich wieder die gleichen Rechte - Probleme habe

    Hat jemand von euch ein ähnliches setup und das als DEV gelöst?

    Mein System:

    DXP4800Plus, 2× 1TB Lexar NM790, 3x Toshiba 8TB MG10ADA800E, 2x 32GB Crucial DDR5 - 5600 S0DIMM CT32G56C46S5, UGOS 1.14.1.0107
    DS918+, 12GB RAM, Volume1 -> 3x 4TB WD RED WD40EFRX / 1x 4TB WD RED WD40EFAX, Volume2 -> 1x 500GB NVMe M.2 Crucial CT500P1SSD8
    Fritzbox 7590 mit OS 8.x mit Wireguard, TNG Glasfaser, Linux Mint 22.x / Ubuntu - Server 24.x

  • Da ich viele php Dateien anlege und lösche, habe ich das Problem mit den Rechten.

    Webhosting heißt 775 auf Verzeichnisse, 644 auf darin enthaltene Dateien. Wenn du was neues reinschiebst musst du also immer wieder korrigieren oder Änderungen als der entsprechende Nutzer vornehmen.

    Meine Hardware


    • DXP6800PRO | 2 x CT16G48C40S5.M8A1 16 GB 4800 MHz | 3 x Seagate ST12000VN0008-2YS101 12TB | 3 x Samsung SSD 870 EVO 1TB | 4 x Samsung SSD 990 PRO 2TB

  • Okay, danke, dann ist das für mich als Entwickler nicht praktikabel. Dass das fertige Produkt später mit den richtigen Rechten etc betrieben wirtd ist klar. Dann muss ich mal schauen, wie es lokal unter Linux funktioniert oder bei Windows und Laragon bleiben....

    Mein System:

    DXP4800Plus, 2× 1TB Lexar NM790, 3x Toshiba 8TB MG10ADA800E, 2x 32GB Crucial DDR5 - 5600 S0DIMM CT32G56C46S5, UGOS 1.14.1.0107
    DS918+, 12GB RAM, Volume1 -> 3x 4TB WD RED WD40EFRX / 1x 4TB WD RED WD40EFAX, Volume2 -> 1x 500GB NVMe M.2 Crucial CT500P1SSD8
    Fritzbox 7590 mit OS 8.x mit Wireguard, TNG Glasfaser, Linux Mint 22.x / Ubuntu - Server 24.x

  • Also prinziell ist sowas als Skript möglich, nur falls hier später jemand reinschaut und dasselbe Problem hat.

    Da ich das nicht nutze, kann ich hier kein sinnvolles Skript anbieten, was jedoch zu tun ist, hat der alter Mann beschrieben.

    chown user:gruppe dateiname und

    chmod 775 verzeichnisname bzw. chmod 644 dateiname

    Wobei mir jetzt nicht klar ist, ob das mit chown, so sinnvoll ist, da ich nicht weiß, ob andere User hier noch Dateien anlegen dürfen. In dem Fall wäre hier noch zu differenzieren. Weitere sinnvolle Option ist in allen Fällen -R, dass das ganze rekursiv durchführt.

    Zum Suchen, welche Dateien betroffen sind, könnte man auch find benutzen und dann würde ich das Ergebnis dann zu xargs pipen und dort entsprechend bearbeiten.

    NAS: mehrere DXP-4800+ mit Raid 5, 4 Toshiba 22 GB (Btrfs) und Raid 1, 2 Samsung 990 Pro 4 GB (Btrfs)

    Clients/Server: Linux Mint 22.3, MX-Linux, Debian Trixie.

  • Man könnte die betroffenen Ordner auch mit den Inotify-Tools überwachen lassen und bei Veränderung o.a. Aktionen ausführen.

    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

  • Tommes verdammt gute Idee 😊. Falls das Ugreen OS das zulässt, würde die Idee von Tommes bevorzugen. Ich hab das unter Ugreen OS noch nicht ausprobiert, daher meine Unwissenheit.

    NAS: mehrere DXP-4800+ mit Raid 5, 4 Toshiba 22 GB (Btrfs) und Raid 1, 2 Samsung 990 Pro 4 GB (Btrfs)

    Clients/Server: Linux Mint 22.3, MX-Linux, Debian Trixie.

  • Code
    $ which inotifywait
    /usr/bin/inotifywait
     
    $ which inotifywatch
    /usr/bin/inotifywatch

    Sollte funktionieren.

    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 meint ihr, sobald sich eine Datei ändert, werden hier automatisch die Rechte / Besitzer gesetzt? Mhhh, auch ein Ansatz.

    Ich habe jetzt im Moment eine VM mit Linux Mint und dort mal fix ein LAMP -Server erstellt.

    Der funktioniert tadellos. Und hier kann ich aus dem Heimnetz mit der vergebenen IP die Webseite im Browser anschauen, und mit VSCode bzw Codium und dem SSH Remote Code direkt im in /var/www/html die Dateien bearbeiten. Und, ich kann wenn es ein Problem gibt, mal fix in die VM rein. Aber, ich muss dann natürlich auch ein Betriebssystem mehr pflegen und vergeude mehr Ressourcen...

    Aber aus Neugierde würde ich weiterhin testen wollen, ob man das auch mit Docker hinbekommt...

    Mein System:

    DXP4800Plus, 2× 1TB Lexar NM790, 3x Toshiba 8TB MG10ADA800E, 2x 32GB Crucial DDR5 - 5600 S0DIMM CT32G56C46S5, UGOS 1.14.1.0107
    DS918+, 12GB RAM, Volume1 -> 3x 4TB WD RED WD40EFRX / 1x 4TB WD RED WD40EFAX, Volume2 -> 1x 500GB NVMe M.2 Crucial CT500P1SSD8
    Fritzbox 7590 mit OS 8.x mit Wireguard, TNG Glasfaser, Linux Mint 22.x / Ubuntu - Server 24.x

  • Moinsen deltapapa

    Mit Docker geht alles, was Webentwicklung als Unterstruktur braucht.

    Rechte können von Host zu Container weitergereicht werden.

    YAML
     group_add:
           - 44 # video Gruppe

    Angaben ohne gewähr, weil ich habe das nur mit Docker-Rootless getestet, und da musste als UID und GID immer die null eingegeben werden.

    Dann waren die Dateien auf dem Host nur dem root bekannt, im Container war es die Vorgabe des Docker-Images.

    War nicht wirklich praktikabel, bis ich gemerkt habe, das ich mit VSCode auch direkt in den Container gehen konnte.

    Probleme waren weitestgehend gelöst ... dachte ich.


    MFG ZMF

    Standard Nerd. "Have You tried to turn it off and on again?", ist mein Lieblingswitz.

    Außerdem habe ich was wichtiges Programmiert, aber vergessen, wo ich das gespeichert habe und was es macht.

    Gut, dass es NAS gibt, oder? Hab euch alle lieb, so ganz pauschal. :love:

    Meine Hardware


    • DH2300 | 4 GB LPDDR4X-RAM | 1x 4 TB Seagate IronWolf - 1x 22 TB Seagate Exos

  • Moinsen,

    ich hatte es in der yaml mit user 1000:1000 versucht, das klappt überhaupt nicht. Dann hatte ich versucht, die UID/GID im Dockerfile zu legen, was auch nicht klappt.

    Das was du geschrieben hast, habe ich nicht ganz verstanden. Wie bist du mit VSCode direkt in den Container gekommen?

    Mein System:

    DXP4800Plus, 2× 1TB Lexar NM790, 3x Toshiba 8TB MG10ADA800E, 2x 32GB Crucial DDR5 - 5600 S0DIMM CT32G56C46S5, UGOS 1.14.1.0107
    DS918+, 12GB RAM, Volume1 -> 3x 4TB WD RED WD40EFRX / 1x 4TB WD RED WD40EFAX, Volume2 -> 1x 500GB NVMe M.2 Crucial CT500P1SSD8
    Fritzbox 7590 mit OS 8.x mit Wireguard, TNG Glasfaser, Linux Mint 22.x / Ubuntu - Server 24.x

  • Moinsen deltapapa

    Auf den Container per VSCode geht über SSH-Verbindung.

    Dazu muss der Container das auch unterstützen.

    Zudem muss der Container auch erreichbar sein.

    Das ist nicht trivial, aber auch kein Hexenwerk.

    Aufwändig ist das aber schon, vor allem, falls der Container kein SSH-Server hat, den musst du dann in das Docker-Image einpflegen.


    Das mit den ID´s kann auch anders betrachtet werden.

    Unter Linux kann der Server z.b. unter einer anderen ID laufen, die wiederum im Container.

    Bei Rootless Docker, wird alles innerhalb des Containers so sein/bleiben wie es ist, und auf dem Host wird alles zu 0-0.

    Ich würde dir empfehlen gleich mit der richtigen SSH-Verbindung zu arbeiten, weil dann ist der User, den du in VSCode einpflegst,

    und alle Dateien werden gleich mir den erforderlichen Rechten versehen.


    Setze dir einmal einige SSH-Server in VM`'s oder Docker Containern auf, und werde sicher im Umgang mit SSH auf CLI-Ebene.

    Schadet nicht, das ist was dir GitHub und Gitea, und Gitlab unter der Haube einsetzen.


    Tüdülüü und sorry das ich nichts Konkretes liefern kann, tropsdem viel Glück.😃

    Standard Nerd. "Have You tried to turn it off and on again?", ist mein Lieblingswitz.

    Außerdem habe ich was wichtiges Programmiert, aber vergessen, wo ich das gespeichert habe und was es macht.

    Gut, dass es NAS gibt, oder? Hab euch alle lieb, so ganz pauschal. :love:

    Meine Hardware


    • DH2300 | 4 GB LPDDR4X-RAM | 1x 4 TB Seagate IronWolf - 1x 22 TB Seagate Exos

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!