2016-09-05 2 views
3

Ich habe meine App (PHP Buildpack) zur Produktion mit cf push app-name bereitgestellt. Danach habe ich an weiteren Features und Bugfixes gearbeitet. Jetzt würde ich meine lokalen Änderungen in die Produktion schieben. Aber wenn ich das tue, gehen alle Bilder (z. B. Profilbild), die auf dem Produktionsserver gespeichert werden, mit jedem Drücken verloren.Wie man nur lokale Änderungen drückt, ohne den Behälter zu zerstören?

Wie übernehme ich nur die Änderungen im Code, ohne irgendwelche gespeicherten Dateien auf dem Produktionsserver zu verlieren?

Es sollte wie ein "git pull"

Antwort

4

Ihre Anwendung Container staatenlos sein sollte. Um Daten zu erhalten, sollten Sie die angebotenen Dienste nutzen. Die Swisscom Application Cloud bietet eine S3 compatible Dynamic Storage (z. B. für Bilder oder Benutzeravatare) oder verschiedene Datenbankdienste (MongoDB, MariaDB und andere). Wenn Sie Benutzerdaten speichern müssen, sollten Sie sie in einem dieser Dienste anstelle des lokalen Dateisystems des Containers der App speichern. Wenn Sie Ihre App statusfrei halten, können Sie sie einfacher migrieren und skalieren. Sie finden weitere Informationen darüber, wie Ihre App so strukturiert sein sollte, dass sie in einer modernen Cloud-Umgebung ausgeführt werden kann here. Weitere Informationen zur Verwendung Ihrer App mit einem Dienst finden Sie unter this link.

1

Zitat von Avoid Writing to the Local File System

Anwendungen auf Cloud Foundry ausgeführt wird, sollte nicht aus den folgenden Gründen Dateien in das lokalen Dateisystem schreiben:

Lokale Dateisystemspeicher ist kurzlebig. Wenn eine Anwendungsinstanz abstürzt oder stoppt, sind die dieser Instanz zugewiesenen Ressourcen , die von der Plattform zurückerlangt wurden, einschließlich aller lokalen Festplattenänderungen seit dem Start der App . Wenn die Instanz neu gestartet wird, startet die Anwendung mit einem neuen Datenträgerabbild. Obwohl Ihre Anwendung lokale -Dateien schreiben kann, während sie ausgeführt wird, werden die Dateien verschwinden, nachdem die -Anwendung neu gestartet wird.

Instanzen der gleichen Anwendung teilen kein lokales Dateisystem. Jede Anwendungsinstanz wird in einem eigenen isolierten Container ausgeführt. Eine von einer Instanz geschriebene Datei ist daher für andere Instanzen derselben Anwendung nicht sichtbar. Wenn die Dateien temporär sind, sollte dieses kein Problem sein. Wenn Ihre Anwendung jedoch die Daten in den Dateien benötigt, um Neustarts der Anwendung zu erhalten, oder die Daten für alle laufenden Instanzen der Anwendung freigegeben werden müssen, sollte das lokale Dateisystem nicht verwendet werden. Wir empfehlen, zu diesem Zweck einen gemeinsamen Dienst wie eine Datenbank oder einen Blobstore zu verwenden.

In Zukunft wird Ihr Problem mit Volume Services (Experimental) "gelöst" werden. Sie haben eine persistente Festplatte für Ihre App.

Cloud Foundry Anwendungsentwickler können ihre Anwendungen wollen montieren ein oder mehrere Volumes, um einen zuverlässigen zu schreiben, nicht-vergänglichen Dateisystem.Durch die Integration mit Service-Brokern und der Cloud Foundry-Laufzeit können Anbieter diese Dienste Entwicklern über einen automatisierten Self-Service- und On-Demand-Benutzer anbieten.

Bitte abonnieren Sie unseren Newsletter für Feature-Ankündigungen. Bitte überwachen Sie auch die CF-Community für Upstream-Entwicklung.

Verwandte Themen