Wie kann ich Docker für die Entwicklung und Bereitstellung eines benutzerdefinierten Designs konfigurieren?


12

Ich fange gerade mit Docker an und bin noch neu in der professionellen WordPress-Entwicklung. Ich möchte eine Docker-Entwicklungsumgebung (auf meinem Mac) einrichten, damit ich benutzerdefinierte WordPress-Designs entwickeln kann.

Angenommen, Sie haben dies bereits getan und verwenden Docker bereits. Wie haben Sie dies eingerichtet? Wie sehen Ihre Dockerfile und docker-compose.yml aus? Ich bin mir sicher, dass das schon mal gemacht wurde. Es würde mich nicht wundern, wenn es bereits einen einzeiligen Befehl gibt, der dies für Sie einrichten kann.

Update: Ich habe dieses Thema auf die folgende Frage eingegrenzt:

Wie kann ich Docker für die Entwicklung und Bereitstellung eines benutzerdefinierten Designs konfigurieren?


Ich musste nur zwei Link nur Antworten löschen. Da Ihre Frage 8 positive Stimmen hat, würde es Ihnen etwas ausmachen, sie auf eine Frage einzugrenzen, die lösbar ist?
Kaiser

@kaiser "Professionelle WordPress-Entwicklung" ist nicht sehr gut dokumentiert, daher versuchen viele (auch ich) zu lernen, wie man mit WordPress auf professionelle Weise arbeitet, um benutzerdefinierte WordPress-Themes zu entwickeln und bereitzustellen. Die Verwendung von Docker hilft dabei, eine Umgebung zu erstellen, die die Produktionsumgebung widerspiegelt, aber auch Neuland ist. Daher möchte ich wissen, wie die Leute Docker in ihren WordPress-Entwicklungsworkflow integrieren.
Andrew

Andrew, bitte schau dir diesen Text an, um zu sehen, welche Art von Fragen wir auf dieser Site offen halten. So wie es aussieht, ist Ihre Frage sehr subjektiv, offen und zieht nur meinungsbasierte oder nur verknüpfte Antworten an. Bitte ändern Sie das, sonst müssen wir die Frage schließen. Vielen Dank.
Kaiser

@kaiser Okay, ich habe meinen besten Versuch unternommen, dies zu einer konzentrierteren Frage zu machen.
Andrew

Antworten:


7

Ich werde eine Teilantwort posten, um die Diskussion zu beginnen, in der Hoffnung, einige hilfreiche Kommentare zu erhalten, um die Lücken oder alternativen Antworten auszufüllen ...

Schritt 1: boot2docker installieren und einrichten

Docker läuft nur unter Linux. Um Docker auf unserem Mac nutzen zu können, müssen wir boot2dockerDocker auf einer Linux-VM installieren . Sie können boot2dockermit Homebrew installieren :

brew install boot2docker

Sobald die Installation abgeschlossen ist, richten Sie boot2docker ein und starten es:

boot2docker init
boot2docker start

Als Nächstes müssen wir einen Befehl ausführen, um einige Umgebungsvariablen einzurichten, damit docker-compose Docker in unserer boot2docker-VM findet.

eval "$(boot2docker shellinit)"

Möglicherweise möchten Sie die Zeilen, die Variablen exportieren, zu Ihren Zeilen hinzufügen, ~/.bash_profiledamit Sie den Befehl nicht jedes Mal ausführen müssen, wenn Sie ein neues Terminalfenster öffnen.

Schritt 2: Installieren Sie docker-compose

Es gibt ein Docker-Plugin namens docker-compose(ursprünglich genannt fig), mit dem Sie die Beziehung zwischen Ihren Docker-Containern ganz einfach definieren können. Sie können es auch mit Homebrew installieren:

brew install docker-compose

Schritt 3: Erstellen Sie docker-compose.yml

Es gibt ein offizielles WordPress Docker-Image in der Docker-Registrierung. Es enthält einige Informationen zum manuellen Starten von Docker mit allen Befehlszeilen-Flags, die erforderlich sind, damit alles funktioniert. Soweit ich das beurteilen kann, können Sie das alles überspringen, weil wir es verwenden werden docker-compose. Erstellen Sie in dem Verzeichnis, in dem Sie an Ihrem WordPress-Theme arbeiten, ein docker-compose.ymlmit folgendem Inhalt:

wordpress:
  image: wordpress
  links:
    - db:mysql
  ports:
    - 8080:80
  volumes:
    - .:/var/www/html/wp-content/themes/my-theme-name

db:
  image: mariadb
  environment:
    MYSQL_ROOT_PASSWORD: example

Die volumesKonfiguration verknüpft unsere Themendateien in unserem aktuellen Verzeichnis mit einem neuen Themenverzeichnis im Docker-Container.

Schritt 4: Starten Sie die Container

Führen docker-compose upSie aus und Sie werden zwei Docker-Container ("wordpress" und "db") einrichten, in denen eine Installation von WordPress ausgeführt wird.

Schritt 5: Öffnen Sie die Site im Browser

In unserer docker-compose.ymlKonfiguration wurde angegeben, dass Port 80 an Port 8080 weitergeleitet wird. Außerdem wird boot2dockerdie VM unter einer bestimmten IP-Adresse ausgeführt. Um die URL herauszufinden, müssen wir den folgenden boot2docker ipBefehl verwenden:

open http://$(boot2docker ip):8080

Fragen

Jetzt, wo ich die Container in Betrieb habe, habe ich ein paar Fragen ...

  1. Gibt es eine automatische Möglichkeit, die boot2docker-Umgebungsvariablen einzurichten, mit Ausnahme des Kopierens und Einfügens der in aufgeführten Exporte boot2docker shellinit?

  2. Wenn ich an einer Rails-Anwendung arbeite, verwende ich gerne Pow, damit ich über eine benannte .devDomain auf die App zugreifen kann, anstatt mit bestimmten Ports / IPs zu arbeiten. Wie kann ich mein System (oder Pow) so konfigurieren, dass ich über http://mysite.dev auf den Host zugreifen kann ?

  3. Gibt es irgendwelche Schritte, die ich verpasst habe? Oder gibt es irgendwelche Schritte, die am Ende hinzugefügt werden sollten?


Für deine zweite Frage. Sie können Docker Nginx Proxy ausprobieren: github.com/jwilder/nginx-proxy .
Zhe Li

0

Meine bevorzugte Lösung hierfür ist die Verwendung von Composer in Kombination mit Docker. Docker kümmert sich um die Umgebung, Composer kümmert sich um die Abhängigkeiten, einschließlich Designs, Plugins und anderer Pakete, die ich möglicherweise benötige.

Hier ist mein lokales Docker-Setup:

https://github.com/alexmacarthur/wp-skateboard

Und hier ist ein Zweig, der Composer verwendet, um das Thema _s herunterzuladen und in mein themesVerzeichnis zu stellen:

https://github.com/alexmacarthur/wp-skateboard/tree/starter-theme-underscores

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.