2016-08-04 7 views
2

Ich versuche, Nginx als Reverseproxy in meinem Service Fabric-Cluster bereitzustellen. Ich möchte die nginx.conf-Datei im Verzeichnis config und die nginx.exe im Code-Verzeichnis setzen.Dienst Fabric Guest Executable ConfigFolder

Wie bekomme ich den Pfad zur Datei nginx.conf im Verzeichnis config? Ich habe versucht, einen relativen Pfad zu verwenden, aber es scheint, dass der Name des Konfigurationsverzeichnisses geändert wird, wenn es bereitgestellt wird. Zum Beispiel im Service Manifest habe ich bekomme:

<ExeHost> 
    <Program>nginx.exe</Program> 
    <Arguments>-c ../Config/nginx.conf</Arguments> 
    <WorkingFolder>CodeBase</WorkingFolder> 
    </ExeHost> 

Wenn es jedoch das Config-Verzeichnis NginxPkg.Config.1.0.0

+0

Und es wird jedes Mal umbenannt, wenn Sie die Konfigurationsversion aktualisieren. Sie sollten den Pfad nicht explizit angeben. Stattdessen können Sie die Datei im 'Code'-Ordner ablegen. – cassandrad

Antwort

2
umbenannt wird eingesetzt ist

Das Paket Pfad zu dem Zeitpunkt bestimmt werden von die Bereitstellung. In Ihrem Fall sollten Sie die Konfigurationsdatei in das Code-Paket selbst legen.

Die Pfade für die verschiedenen Pakete sollten zur Laufzeit aus dem CodePackageActivationContext bezogen werden. Im Falle einer Gast-Programmdatei, die die Service Fabric-APIs nicht verwendet, ist dies nicht möglich. Wir überlegen, Ihnen eine Möglichkeit zu geben, einige wichtige Teile des CodePackageActivationContext über Umgebungsvariablen zu adressieren/darauf zuzugreifen.

0

Sie können eine Stapeldatei verwenden und Informationen von SF-Dateien analysieren und dann das Programm ausführen.

Zum Beispiel das folgende Powershell-Skript ruft den Pfad des Config-Paket (geht davon gibt es nur eine Config-Paket):

$package = [xml] (Get-Content "${env:Fabric_Folder_Application}\${env:Fabric_ServicePackageName}.Package.Current.xml"); 
echo ("${env:Fabric_Folder_Application}" + '\' + "${env:Fabric_ServicePackageName}" + '.' + 
     $package.ServicePackage.DigestedConfigPackage.ConfigPackage.Name + '.' + 
     $package.ServicePackage.DigestedConfigPackage.ConfigPackage.Version); 

Beachten Sie, dass das Format dieser Dateien ist nicht öffentlich und in Zukunft Runtimes ändern können.

Verwandte Themen