我正在尝试将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
答案 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);
请注意,这些文件的格式不公开,可能会在将来的运行时更改。