2016-10-10 3 views
1

Ich verwende eine Grails-App, die in CloudFoundry bereitgestellt wird. CloudFoundry verwendet die Datei manifest.yml im Stammverzeichnis des Verzeichnisses. Diese Datei wird von CF übernommen, wenn Sie die Anwendung drücken.So verpacken Sie einen Krieg mit einem externen manifest.yml

Kann ich diese manifest.yml extern weitergeben? Wenn ich meine WAR-Datei an den Client schicke, möchte ich das Manifest.yml, das ich in der Entwicklung verwendet habe, nicht versenden und würde nicht erwarten, dass der Client die Anwendung mit ihrer Version von manifest.ym erstellt

Unterstützt CF die Übergabe einer manifest.yml, die sich außerhalb der WAR-Datei befindet?

+0

Nicht sicher, was Sie meinen, "übergeben Sie die Manifest-Datei extern." Könnten Sie Ihrem Kunden nicht eine WAR-Datei plus eine Art Vorlage Ihres Manifests schicken, die den Kunden auffordert, einfach Dinge einzugeben, die für seine Umgebung spezifisch sind, z. Referenzen? –

+0

Das Manifest ist Teil der WAR-Datei, oder? Also, wenn ich eine WAR-Datei an den Kunden schicke und sie etwas (z. B. Anmeldeinformationen) in der manifest.yml ändern müssen ... wie werden sie es tun? Extrahiere den WAR, ändere das Manifest.Yml, und verpacken Sie es wieder? das scheint aus Sicht des Code-Versands sehr ineffizient zu sein. – Anthony

+0

Hier ist ein Szenario: Meine App verwendet einen Webservice von Drittanbietern und benötigt daher eine URL für diesen Webservice. Ich übergebe den Wert dieser URL als benutzerdefinierte Umgebungsvariable in 'manifest.yml'. Ich verpacke die Anwendung und sende eine Datei (die WAR-Datei) an den Client. Auf der Kundenseite ist die URL der Drittanbieter-App etwas anders. Was macht der Kunde? Oder geht CF davon aus, dass es meine Aufgabe als Anwendungsentwickler ist, mit Produktionswerten zu liefern? Externalisierung dieser Dateitypen ist gängige Praxis. – Anthony

Antwort

0

CloudFoundry verwendet die Datei manifest.yml im Stammverzeichnis des Verzeichnisses. Diese Datei wird von CF übernommen, wenn Sie die Anwendung drücken.

Dies ist nicht korrekt. Der cf cli wird eine manifest.yml Datei im aktuellen Verzeichnis aufnehmen, falls sie existiert. Das ist der Standardspeicherort. Sie können auch einen Standort mit cf push -f path/to/manifest.yml angeben.

http://docs.cloudfoundry.org/devguide/deploy-apps/manifest.html#find-manifest

Ist es mir möglich, diese manifest.yml extern zu passieren?

Dies ist der einzige Weg, dies zu tun. Wenn Sie keinen manifest.yml in die WAR-Datei einfügen möchten, lassen Sie Ihren Benutzer unzip ausführen und extrahieren Sie die Datei. Das cf CLI wird nicht in Ihrer WAR-Datei nach manifest.yml suchen. Es kann möglicherweise nicht einmal Ihre WAR-Datei ohne den Eintrag path von manifest.yml finden.

Unterstützt CF die Übergabe einer manifest.yml, die sich außerhalb der WAR-Datei befindet?

Die Plattform bietet keine Funktionalität zum Freigeben von manifest.yml-Dateien. Wie Sie dies zu Ihrem Kunden bringen, bleibt Ihnen überlassen.

Wie in den obigen Kommentaren erwähnt, möchten Sie wahrscheinlich eine Vorlage eines funktionalen manifest.yml an Ihren Kunden versenden oder Anweisungen geben, wie der Kunde eine manifest.yml erstellen würde. Es wird sich wahrscheinlich in der Umgebung des Kunden unterscheiden. Zum Beispiel könnten sie unterschiedliche Host-&-Domainnamen wünschen oder sie könnten verschiedene Dienste binden.

Eine andere Option wäre ein Deployment-Skript zu versenden. Das Bereitstellungsskript ist zwar etwas komplizierter, könnte aber etwas intelligenter sein, da es unter Verwendung von cf Informationen abfragen und weitere Dinge automatisch einrichten könnte. Benötigt Ihre App beispielsweise einen Dienst? Ein Bereitstellungsskript zum automatischen Erstellen, das mit einer manifest.yml-Datei nicht möglich ist (es kann nur vorhandene Dienste binden).

Hoffe, dass hilft!

Verwandte Themen