Service Fabric Guest Executable ConfigFolder

时间:2016-08-04 08:18:10

标签: azure-service-fabric

我正在尝试将Nginx作为反向代理部署到我的Service Fabric群集中。我想将nginx.conf文件放在config目录中,将nginx.exe放在代码目录中。

如何获取config目录中nginx.conf文件的路径?我尝试使用相对路径,但似乎配置目录的名称在部署时发生了变化。例如,在Service Manifest中我得到了:

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

但是,在部署时,Config目录被重命名为NginxPkg.Config.1.0.0

2 个答案:

答案 0 :(得分:2)

包路径在部署时确定。在您的情况下,您应该将配置文件放在代码包本身中。

应在运行时从CodePackageActivationContext获取各种包的路径。如果guest虚拟机可执行文件未使用Service Fabric API,则无法进行此操作。我们正在考虑为您提供一种通过环境变量来解决/访问CodePackageActivationContext的一些重要部分的方法。

答案 1 :(得分:0)

您可以使用批处理文件并解析SF文件中的信息,然后运行该程序。

例如,以下PowerShell脚本检索配置包的路径(假设只有一个配置包):

$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);

请注意,这些文件的格式不公开,可能会在将来的运行时更改。