|
1
|
| Mike Christensen · 技术社区 · 7 年前 |
|
|
1
5
更新: ServiceFabricSDK3.3.617作为ServiceFabric6.4的一部分发布,现在可以安装在容器中以构建和部署ServiceFabric项目。这可以在Dockerfile中使用以下方法完成:
原始答案: 原来,这不是一个小壮举。此脚本要求安装Windows Service Fabric SDK。安装ServiceFabricSDK的推荐(也是唯一受支持的)方法是通过WebPI is available here . 可以对WebPI进行Dockerize,但是有一个问题。WebPI安装程序由三个组件组成;用于VisualStudio的Service Fabric SDK、Service Fabric运行时和Service Fabric工具。WebPI安装程序将安装所有这些文件。不幸的是,服务结构运行时(截至本文撰写时)无法在Docker容器下运行,因为它希望安装内核级驱动程序。这个虫子是 being tracked here ,但已开放近一年,没有真正的进展。这意味着不能在Docker容器中运行Service Fabric集群,但SDK和工具肯定仍然可以运行,对吗?不幸的是,没有办法告诉安装程序只安装SDK和工具,而不安装运行时。 因此,也许有一种不受支持的方式来安装SDK和工具。结果发现 release notes 为各个组件提供对各种MSI的引用。 Tools for Visual Studio Available Here 从Dockerfile运行msiexec.exe相当简单,这意味着我们应该能够以这种方式安装SDK。不。不幸的是,msiexec将失败,出现一个通用的1603代码。如果在详细模式下运行msiexec并输出日志文件,则可以深入研究此错误并查看根本原因:
所以,我们又一次被击落了。我没有发现其他打包版本的servicefactsdk(Chocolatey有一个,但它只是启动WebPI安装程序),它只剩下一个最终的解决方案;我们在没有安装程序的帮助下手动安装SDK。这需要逆向工程,完全是安装程序所做的,并将其集成到我们的Dockerfile中。
SDK安装程序做了一些事情。它把一堆文件复制到
我最后做的是将密钥文件夹装载为Docker卷,以便在容器中使用它们:
首先,我需要分享
最后,我们分享
在你这么做之后,
在这之后,你应该可以跑了
还有最后一件事要做。这个
现在,我们可以在运行Docker容器(或从Dockerfile)时设置该环境变量。显然,如果你不想修改
另请注意,在脚本部署之前,您需要导入证书(可以从密钥库以PFX文件的形式下载证书):
我相信一个更具生产质量的版本是将所需的文件复制到Dockerfile中的映像中,而不是将它们作为卷装载,这样映像将更独立,但这应该是相当直接的。另外,我相信GAC'ed的dll也可以在NuGet上获得,因此在Docker构建过程中,可以通过NuGet下载所有这些文件。
我希望这有助于一些人,但更希望微软修复他们的安装程序删除运行时的要求。 |
|
2
-2
安装Azure服务结构的最佳方法是创建一个poweshell文件并从dockerfile调用它 powershell文件 :
Dockerfile文件 :
|