我正试图将Nginx作为反向代理部署到我的Service Fabric集群中。我想把nginx.conf文件放在config目录中,把nginx.exe放在code目录中。
如何获取config目录中nginx.conf文件的路径?我尝试使用相对路径,但配置目录的名称在部署时似乎发生了更改。例如,在我的服务清单中:
<ExeHost>
<Program>nginx.exe</Program>
<Arguments>-c ../Config/nginx.conf</Arguments>
<WorkingFolder>CodeBase</WorkingFolder>
</ExeHost>
但是,当它被部署时,Config目录被重命名为NginxPkg.Config1.0.0
包路径在部署时确定。在您的情况下,您应该将配置文件放在代码包本身中。
各种包的路径应该在运行时从CodePackageActivationContext获得。如果来宾可执行文件未使用Service Fabric API,则这是不可能的。我们正在考虑为您提供一种方法,通过环境变量来寻址/访问CodePackageActivationContext的一些重要部分。
您可以使用批处理文件解析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);
请注意,这些文件的格式不是公开的,可能会在未来的运行时更改。