WordPress-Image mit vorinstallierten Plugins mit Dockerfile

Lesezeit: 3 Minuten

Kopieren des Plugin-Ordners in das WordPress-Standardbildverzeichnis und Erstellen eines neuen Bildes. Schieben Sie es in das Repository auf Docker Hub, ziehen Sie das Image zurück und führen Sie den Container aus, aber das Plugin ist nicht installiert. Ordner wurde nicht im Container gefunden.

docker-compose.yml

version: '3.3'
services:
  wp:
    image: "arslanliaqat/wordpresswithplugin:1.0"
    volumes:
      - './wordpress:/var/www/html'
    ports:
      - "8000:80"
    environment:
      WORDPRESS_DB_PASSWORD: qwerty
  mysql:
    image: "mysql:5.7"
    environment:
      MYSQL_ROOT_PASSWORD: qwerty
    volumes:  
      - "my-datavolume:/var/lib/mysql"
volumes: 
  my-datavolume:

Dockerfile

FROM wordpress:php7.1-apache

COPY preferred-languages /var/www/html/wp-content/plugins/preferred-languages/

Plugin konnte nicht vorinstalliert werden

Benutzer-Avatar
Karlis Abele

Das ist also, was passiert:

Wenn Sie Ihr benutzerdefiniertes Image erstellen, fügen Sie den Plugin-Ordner hinzu /var/www/html/wp-content/plugins/preferred-languages/ und das funktioniert prima.

Sie können das testen, indem Sie einfach laufen docker run -it --rm arslanliaqat/wordpresswithplugin sh und cd /var/www/html/wp-content/plugins und Sie sollten den Ordner sehen.

Der Ordner fehlt, wenn Sie Ihre docker-compose.yml-Datei verwenden, weil Sie das Volume „über“ den bereits vorhandenen Ordner mounten. Versuchen Sie, die Volume-Deklaration aus dem wp-Dienst in der Datei docker-compose.yml zu entfernen, und dann sollten Sie Ihren Plugin-Ordner sehen können.

Ich würde vorschlagen, dass Sie den wordpress:php7.1-Apache für Ihren wp-Dienst verwenden und Ihren Plugin-Ordner auf die gleiche Weise mounten, wie Sie WordPress mounten

Beispiel:

version: '3.3'
services:
  wp:
    image: "wordpress:php7.1-apache"
    volumes:
      - './wordpress:/var/www/html'
      - './preferred-languages:/var/www/html/wp-content/plugins/preferred-languages'
    ports:
      - "8000:80"
    environment:
      WORDPRESS_DB_PASSWORD: qwerty
  mysql:
    image: "mysql:5.7"
    environment:
      MYSQL_ROOT_PASSWORD: qwerty
    volumes:  
      - "my-datavolume:/var/lib/mysql"
volumes: 
  my-datavolume:

Gibt es einen bestimmten Grund, warum das Plugin bereits im Image enthalten sein muss?


AKTUALISIERT

Ich habe einen einfachen Kern erstellt, der das erreichen sollte, was Sie tun möchten. Dem Einstiegspunkt fehlt die Überprüfung auf bereits vorhandene Themen-/Plugin-Verzeichnisse usw., aber dies sollte als POC dienen

https://gist.github.com/karlisabe/16c0ccc52bdf34bee5f201ac7a0c45f7

  • Ich persönlich backe meine Plugins gerne in mein Image ein. Wenn ich also gehackt werde, kann ich den Container löschen und eine bekannte Version wiederherstellen. Der Nachteil ist, dass Plugin-Upgrades einen Image-Neuaufbau und eine erneute Bereitstellung erfordern.

    – Halber

    13. Juni 2019 um 9:19 Uhr


  • Nun, Sie können immer ein benutzerdefiniertes Einstiegsskript für Ihr Bild verwenden, das einen Symlink von einem anderen Ordner auf dem Bild zum Plugins-Ordner erstellt … Wenn dies nach einer Option klingt, kann ich der Antwort ein Beispiel hinzufügen

    – Kārlis Ābele

    13. Juni 2019 um 9:25 Uhr


  • Was ich eigentlich will, ist, dass wenn ich WordPress installiere, mein Theme, Plugins automatisch installiert werden.

    Benutzer8325933

    13. Juni 2019 um 10:02 Uhr

  • Ich bin nicht wirklich ein WP-Entwickler, aber soweit ich mich erinnere, können Plugins/Designs auch DB-Änderungen enthalten, das heißt, Sie müssen also auch ein Skript ausführen, das diese installiert? Oder Sie benötigen einfach die Plugin-/Theme-Dateien an den erforderlichen Stellen? Ich würde sagen, Sie können ein einfaches Bash-Skript erstellen, das als Einstiegspunkt für Ihr Bild verwendet wird und beim Start einen Symlink vom Themen-/Plugin-Ordner zum erforderlichen WP-Unterordner erstellt

    – Kārlis Ābele

    13. Juni 2019 um 10:07 Uhr


  • @KārlisĀbele der Plugin-Ordner ist jetzt sichtbar. aber sein Inhalt ist leer und wird auch nicht in der WordPress-Plugin-Tabelle angezeigt.

    Benutzer8325933

    13. Juni 2019 um 10:37 Uhr

1246450cookie-checkWordPress-Image mit vorinstallierten Plugins mit Dockerfile

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy