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
Webserver (HTML, PHP, SQL) als Docker-Image
-
el caramba -
July 15, 2025 at 11:14 AM -
Thread is Resolved
-
- 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):
Code
Display Moreversion: '3' services: web: image: php:8.2-apache container_name: apache_php volumes: - /volume1/docker/mywebsite/www:/var/www/html ports: - "8080:80" depends_on: - db db: image: mysql:8.0 container_name: mysql_db restart: always environment: MYSQL_ROOT_PASSWORD: rootpass MYSQL_DATABASE: mydb MYSQL_USER: user MYSQL_PASSWORD: userpass volumes: - /volume1/docker/mywebsite/db_data:/var/lib/mysql phpmyadmin: image: phpmyadmin/phpmyadmin container_name: phpmyadmin environment: PMA_HOST: db MYSQL_ROOT_PASSWORD: rootpass ports: - "8081:80" depends_on: - db volumes: db_data:... 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...
-
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_dataDann z.B. in Portainer "Create Stack" mit dem Namen "mywebsite" und das YAML einfügen:
Code
Display Moreversion: '3' services: web: image: php:8.2-apache container_name: apache_php volumes: - /volume1/docker/mywebsite/www:/var/www/html ports: - "8888:80" depends_on: - db db: image: mysql:8.0 container_name: mysql_db restart: always environment: MYSQL_ROOT_PASSWORD: rootpasswort MYSQL_DATABASE: mywebsite MYSQL_USER: maxmustermann MYSQL_PASSWORD: maxseinpasswort volumes: - /volume1/docker/mywebsite/db_data:/var/lib/mysql phpmyadmin: image: phpmyadmin/phpmyadmin container_name: phpmyadmin environment: PMA_HOST: db MYSQL_ROOT_PASSWORD: rootpasswort ports: - "8890:80" depends_on: - dbDann noch unter dem www Verzeichnis eine index.php anlegen mit z.B.:
Rechte setzen:
Codesudo chown -R 33:33 /volume1/docker/mywebsite/www sudo chmod -R 755 /volume1/docker/mywebsite/wwwDanach 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. -
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.
-
- Best Answer
probiere mal ein anderes Image:
Codeweb: 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. -
Wenn du Wordpress einrichten willst, dann nutz doch direkt das offizielle Image https://hub.docker.com/_/wordpress.
-
Such im Netz mal nach LAMP oder XAMPP in Verbindung mit Docker Compose bzw. Stack, dann findest du u.a. sowas hier
-
Display More
probiere mal ein anderes Image:
Codeweb: 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.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?
-
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.
-
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....
-
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.
-
Man könnte die betroffenen Ordner auch mit den Inotify-Tools überwachen lassen und bei Veränderung o.a. Aktionen ausführen.
-
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.
-
-
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...
-
Moinsen deltapapa
Mit Docker geht alles, was Webentwicklung als Unterstruktur braucht.
Rechte können von Host zu Container weitergereicht werden.
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
-
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?
-
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.😃
-
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!