Httpd.conf Datei bearbeiten bei Docker Image?
Wie bearbeite ich die config Datei über die Konsole wenn sie in einem Docker Images ist?
Nutze einen Apache Image
1 Antwort
Dafür gibt es ausreichend viele Anleitungen im Internet, bspw.
- https://stackoverflow.com/questions/34449511/how-to-make-changes-to-httpd-conf-of-apache-running-inside-docker-container-and
- https://www.docker.com/blog/how-to-use-the-apache-httpd-docker-official-image/#config-tips
Beliebige Suchmaschine ist dein Freund!
Kurzform: Du setzt ein storage an den Container dran, der die Konfig-Dateien enthält und sie dort auch dauerhaft speichern kann.
Allgemein kann man Befehle bzw. eine Shell innerhalb eines Containers starten über "exec". Siehe bspw.
Wichtig: Hast du kein Storage an einem Container dran, gehen alle Einstellungen verloren, sobald der Container beendet wird.
Hast du den Ordner /opt/docker/etc/supervisor.d/ an den Container weitergereicht?
Ich denke schon, ich nutze das Image mit Truenas Scale, da kann man ja einfach pullen und der kümmert sich ja quasi um alles.
Das heißt aber nicht unbedingt, dass dieser Ordner für den Container erreichbar ist. Machst du das über Docker-Compose?
Ich bin auf dem gebiete Docker noch sehr frisch. Wenn du mit Docker-Compose meinst ob noch mehr laufen, ja. Aber nur der eine mit diesem Image und auch kein vHost
Nein, Docker-Compose ist eine Anwendung, in der du definierst, wie deine Container auszusehen und zu konfigurieren sind. Siehe
https://docs.docker.com/compose/
Du musst dem Container explizit mitteilen, woher er seine Konfigurations-Daten erhält. Ansonsten ist das Ding nämlich in seinem Container unveränderbar und kann nichts auf dem System sehen ("containerisiert").
Wenn ich einen Container gepullt habe und ich in diesem Container eine Datei hinzufüge etc. sieht der Container die trotzdem nicht?
Doch, dann sollte er sie sehen. Sorry, das wurde aus deinen Antworten für mich nicht ganz klar.
Wie fügst du die Datei denn hinzu?
docker cp /mnt/localeDatein/httpd.conf 2666d27eba6e:/opt/docker/etc/supervisor.d/httpd.conf
Die ID ändert sich natürlich immer wieder, ich reboote das Image natürlich nach änderungen auch. Die Datei liegt jetzt auch im Ordner. Ich hab in die Datei zum testen einfach mal
<Location "/test">
Redirect permanent "/test" "/test.html"
</Location>
geschrieben. Leider wenn ich die IP vom Webserver aufrufe und dann /test kommt nur 404 Not Found. Die Datei existiert natürlich ;D
ich reboote das Image natürlich nach änderungen auch.
Und damit sind alle Daten weg, außer du hast dem Container ein permanentes Storage gegeben :D
Liegen /test und /test.html auch im Container?
die Web dateien werden in den Container gemounted.
Ahh das würde natürlich Sinn machen, ich schau mal gleich nach, für die Lernkurve ;D. Also am besten in das /opt/docker/etc/supervisor.d/ auch die httpd.conf mounten?
Vermutlich? Ich habe sowas immer über ein Docker-Compose-File gemacht. Da war das recht einfach machbar...
Noch mal: Container vergessen bei Neustart oder Beendigung alles, was nicht explizit als permanentes Storage mitgegeben wurde.
Kann man nachträglich per Command ein permanentes Storage "Attribut" vergeben? Du hast mir riesig weitergeholfen!!! Ohne dich wäre ich warscheinlich nie darauf gekommen das der Container alles vergisst :D
Sicherlich kann man das. Aber da kann ich dir gerade nicht weiter helfen. Wie schon gesagt, habe ich das über Docker-Compose erledigt.
Vielen Dank für deine Antwort, diese Lösungen habe ich ausprobiert es geht aber immer noch nicht. Ich habe diese Image webdevops/php-apache . In der Dokumentation steht das es unter
eine httpd.conf datei gibt, bei mir existiert diese nicht, und wenn ich diese anlege wird diese aber auch nicht berücksichtigt.