2017-04-26 4 views
2

Ich habe kubernetes pod, wo ich meinen App-Quellcode als git-Volume mounte. Ich habe verschiedene Setups ausprobiert, um herauszufinden, wie ich den Quellcode in den Pod legen kann, und git volume war der, mit dem ich am Ende gekommen bin.Wie mounte ich Volumen in den Quellcode der App?

Aber jetzt habe ich ein Problem mit Daten. Meine App hat ein Dateiverzeichnis darin (leer) und ich muss dort ein Volume (Sicherung) mounten. Aber da das Ziel auf dem Git-Volume liegt, kann ich das nicht tun. Also frage ich mich, wie ich meine App neu gestalten soll?

Soll ich den Quellcode der App direkt in das Image einbauen, damit ich dann das Datenvolumen einbinden kann oder gibt es eine Möglichkeit, das Volume in ein anderes zu laden, sodass ich nichts anpassen muss?

Ich kann das Zielverzeichnis nicht woanders verschieben, da es von der App in seinem Verzeichnis und auch vom Web aus zugänglich sein muss.

Antwort

4

Normalerweise füge ich die Quellen zum Docker-Bild hinzu, wenn ich das Bild erstelle. Dies ist ein unkomplizierter Prozess und Sie können die Bilder immer als eine Blackbox in Bezug auf die Bereitstellung sehen. Dadurch werden die Vorbereitung des Abbilds und die Bereitstellung/Aktualisierung zur Laufzeit effektiv als zwei verschiedene Prozesse entkoppelt.

Ich glaube, das ist der Grund, warum kubernetes es leicht macht, rollierende Upgrades für die Einführung neuer Softwareversionen durch den Austausch eines vollständigen Images durchzuführen, anstatt den Inhalt eines Containers zu reparieren. Es ist so einfach wie mit dem folgenden Befehl:

kubectl set image deployment/my-nginx-deployment my-nginx-image=TagXX

Bilder austauschen stellt auch sicher, dass alle Ablagerungen (zB wachsende Protokolle, temporäre Dateien usw.) gereinigt werden und ermöglicht es Ihnen, viel mehr Änderungen mitbringen statt Ändern von Quellen (z. B. Aktualisieren von Server-Softwareversionen).

Es ermöglicht Ihnen auch, Tests/Staging auf Basis der exakten Images und nicht nur einer Codebereitstellung auf Servern durchzuführen, die möglicherweise nicht mit Produktionsservern identisch sind.

Sie können es bei this page unter Updating a Deployment lesen.

+0

Das Problem ist, dass, wenn Sie den Quellcode in mehreren Containern benötigen (zum Beispiel nginx und php), müssen Sie immer beide Bilder neu erstellen und behalten Sie die richtigen Versionen des Quellcodes in beiden, während mit gitRepo Sie behalten die Version nur in der Bereitstellung und Sie müssen Bilder überhaupt nicht neu erstellen. –

+0

Wenn ich eine PHP-App habe, verwende ich normalerweise nginx und php im selben Container, so dass der Code nur einmal bereitgestellt wird. Und ich glaube, dass die Vorteile des Austausches von ganzen Containern, die in meiner Antwort aufgeführt sind, die Vorteile überwiegen, die Sie dadurch erhalten, dass Sie den Code nicht in zwei separate Container laden. Hier ist ein Beispiel, wie man einen Container mit nginx und php erstellt: https://github.com/ngineered/nginx-php-fpm –

Verwandte Themen