Ich habe einen WordPress-Container, der von a generiert wird docker-compose Datei. WordPress-Container enthält .htaccess
Datei standardmäßig. Ich möchte das so bearbeiten, dass die Bearbeitung nur einmal durchgeführt wird, wenn der Container erstellt wird.
Bearbeiten Sie die standardmäßige .htaccess-Datei im WordPress-Docker
Ayushya
Im Moment fallen mir zwei mögliche Lösungen für dieses Problem ein:
-
Wir können ein statisches verwenden
.htaccess
Datei und mounten Sie das als Volume an der Stelle, wo das Original war.htaccess
kopiert wird, dh bei/var/html/www
im Behälter. Von Updates zu dieser Antwort habe ich das verifiziert.htaccess
Datei wird standardmäßig nicht überschriebendocker-entrypoint.sh
. -
Wir können die docker-entrypoint.sh von wordpress docker at verwenden github und ändern Sie den Teil, der die erstellt
.htaccess
Datei. Dadurch wird das Standardverhalten von Einstiegspunkt und beibehalten.htaccess
Datei wird ebenfalls geändert.
Aktualisieren: Antwort von @Nazar ist auch richtig. Default genauer unter die Lupe nehmen docker-entrypoint.sh in wordpress image habe ich festgestellt, dass es eine Bedingung bei gibt Zeile 35die überprüft, ob .htaccess
Datei bereits existiert und erstellt nur dann eine neue Datei, wenn file ist nicht vorhanden. Wenn ich also meine eigene Datei mit RUN
es wird nicht überschrieben werden.
Nazar Sacharenko
Am einfachsten ist es, ein eigenes Image auf Basis von wordpress:with-netcat mit allen erforderlichen Vorbereitungen zu erstellen:
FROM wordpress:with-netcat
RUN /. EDIT YOUR .htaccess file here ./
ENTRYPOINT ...
CMD ...
Und dieses Bild anstelle des Originals zu verwenden.
-
Das kann ich nicht, da hier vorgenommene Änderungen von überschrieben werden
docker-entrypoint.sh
die ausgeführt wird, nachdem das Image erstellt wurde. Es kopiert den gesamten Inhalt nachvar/html/www
und dadurch auch meine Akte ersetzen.– Ayushya
7. Juli 2017 um 15:14 Uhr
-
deine Antwort war hilfreich. Beim genaueren Hinsehen
docker-entrypoint.sh
Ich habe das beim Kopieren des gesamten Inhalts gefundenvar/html/www
gibt es vor dem Ändern eine bedingte Prüfung.htaccess
Datei.– Ayushya
10. Juli 2017 um 6:51 Uhr
Sytech
Dies kann schwierig sein, wenn Sie ein Verzeichnis auf dem Host mounten /var/www/html
(z.B. bei der Nutzung -v /host/path:/var/www/html
oder ähnliches) — der Volume-Mount wird alles in Ihrem Image überschreiben (überschreiben).
Wenn Ihr Host keine Mounts hat, fügen Sie einfach hinzu COPY .htaccess /var/www/html/.htaccess
(oder das bestehende ändern mit RUN
) sollte arbeiten.
Um zu umgehen, dass der Volume-Mount die htaccess-Datei des Abbilds belastet, schreiben Sie stattdessen ein Entrypoint-Skript, um die Datei zu überschreiben. Da der Einstiegspunkt ausgeführt wird, nachdem der Mount vorhanden ist, wird er mit Sicherheit wirksam.
Erstellen Sie ein benutzerdefiniertes Shell-Skript für den Einstiegspunkt, in das Ihre htaccess-Datei kopiert wird /var/www/html
feuert dann den Standardeinstiegspunkt ab:
#!/usr/bin/env bash
# entrypoint.sh
cp /my-htaccess-file /var/www/html/.htaccess
# run the entrypoint from the ancestor image
docker-entrypoint.sh "$@"
Fügen Sie dann in Ihrer Docker-Datei Ihre eigene htaccess-Datei an einen bekannten Speicherort hinzu, fügen Sie das Einstiegspunktskript hinzu und setzen Sie den Bildbefehl (neu):
FROM wordpress:5.8.2-php7.4
COPY entrypoint.sh /my-entrypoint.sh
# RUN chmod +x /my-entrypoint.sh # uncomment if your source file is not executable
COPY .htaccess /my-htaccess-file
ENTRYPOINT ["/my-entrypoint.sh"]
# whenever the entrypoint is set, the command must also be set again
# this is the default CMD from the ancestor image.
CMD ["apache2-foreground"]