Projektlayout mit Vagrant, Docker und Git

8

Also habe ich vor kurzem Docker und Vagrant entdeckt, und ich beginne ein neues PHP-Projekt, in dem ich beide verwenden möchte:

Vagrant, um eine austauschbare Umgebung zu haben, die alle Entwickler verwenden können.

Docker für die Produktion, aber auch in der Landstreichermaschine, so dass die Entwicklungsumgebung der Produktion so nahe wie möglich kommt.

Der erste Ansatz besteht darin, alle Definitionsdateien zusammen mit dem Quellcode im selben Repository mit diesem Layout zu erstellen:

%Vor%

So führt die Vagabund-Maschine bei Bereitstellung alle Docker- "Maschinen" aus und stellt Datenbanken und Quellcode richtig ein.

Ist das ein guter Ansatz? Ich versuche immer noch herauszufinden, wie dies in Bezug auf die Bereitstellung in der Produktion funktionieren wird.

    
antonienko 24.04.2015, 15:03
quelle

2 Antworten

7
  

Ist das ein guter Ansatz?

Ja, zumindest funktioniert es seit ein paar Monaten für mich.

Der Unterschied ist, dass ich auch eine docker-compose.yml Datei habe.

In meinem Vagrantfile gibt es einen ersten Provisioning-Abschnitt, der docker, pip und docker-compose installiert:

%Vor%

und schließlich ein Provisionierungsabschnitt, der docker-compose auslöst:

%Vor%

Es gibt andere Möglichkeiten zum Erstellen und Starten von Docker-Containern von vagrant, aber mit docker-compose ich, um irgendwelche Dockerspezifitäten aus meiner Vagrantfile zu externalisieren. Dadurch kann diese Vagrant-Datei für andere Projekte ohne Änderungen wiederverwendet werden; Sie müssten nur eine andere docker-compose.yml -Datei bereitstellen.

Eine andere Sache, die ich anders mache, ist die Vagrantfile in die Wurzel Ihres Projekts zu stellen (und nicht in ein vagrant Verzeichnis), da es ein Ort ist, an dem Menschen und Werkzeuge (einige IDE) es finden. PyCharm tut, PhpStorm wahrscheinlich.

Ich habe auch meine docker-compose.yml -Datei an die Wurzel meiner Projekte gestellt.

Letztendlich gehe ich zum Entwickeln einfach in mein Projektverzeichnis und fange vagrant an, was docker-compose anleitet (um dann zu bauen), führe die Andock-Container aus.

  

Ich versuche immer noch herauszufinden, wie dies bei der Bereitstellung in der Produktion funktionieren wird.

Für die Bereitstellung in der Produktion besteht eine gängige Praxis darin, Ihre Docker-Images dem ops-Team bereitzustellen, indem Sie sie auf einem privaten Docker Registrierung . Sie können entweder eine solche Registrierung in Ihrer eigenen Infrastruktur hosten oder Online-Dienste wie Docker Hub verwenden.

Geben Sie dem ops-Team auch eine docker-compose.yml -Datei, die definiert, wie die Container ausgeführt und verknüpft werden. Beachten Sie, dass diese Datei nicht die build: Anweisung verwenden sollte, sondern sich stattdessen auf die image: Anleitung. Wer möchte während der Bereitstellung in der Produktion Komponenten erstellen / kompilieren?

Dieser Docker-Blog-Artikel kann helfen, herauszufinden So verwenden Sie docker-compose und docker-swarm zum Bereitstellen auf einem Cluster.

    
Thomasleveil 25.04.2015, 01:17
quelle
1

Ich empfehle, Docker auch für die Entwicklung zu verwenden, um vollständige Replikation der Abhängigkeiten zu erhalten. Docker Compose ist das Schlüsselwerkzeug.

Sie können eine Strategie wie folgt verwenden:

docker-compose.yml

%Vor%

In Ihrer Dockerfile können Sie die Abhängigkeiten angeben, um Ihren PHP-Code auszuführen.

Außerdem empfehle ich, my_database_image und my_machine_x_image Projekte mit ihrem Dockerfiles zu trennen, da sie perfekt mit anderen Projekten verwendet werden können.

Wenn Sie einen Mac verwenden, verwenden Sie bereits eine VM namens boot2docker

Ich hoffe, das hilft.

    
quelle

Tags und Links