12

语境

我们正在尝试使用edeliver将 Phoenix Web 应用程序的“热升级”部署到远程虚拟机实例。

我们的目标是每次都构建应用程序的“升级”版本,以便应用程序可以在生产中“热”升级而不会出现任何停机时间。

我们已经成功地在“Hello World”凤凰应用程序上进行了这个“热升级”: https ://github.com/nelsonic/hello_world_edeliver ,它是在构建通过时从 Travis-CI自动部署的。见:https ://travis-ci.org/nelsonic/hello_world_edeliver/builds/259965752#L1752

因此,理论上这种技术应该适用于我们的“真实”应用程序。

尝试使用 Edeliver 部署“真正的”Phoenix 应用程序

运行以下命令(构建升级):

mix edeliver build upgrade --auto-version=git-revision --from=$(git rev-parse HEAD~) --to=$(git rev-parse HEAD) --verbose

即“从以前的 git 版本升级到当前版本”

到目前为止,一切都很好。“发布成功搭建!

交付-升级-构建-成功

错误:vm.args: No such file or directory

当我们尝试部署升级时:

mix edeliver deploy upgrade to production --version=1.0.3+86d55eb --verbose

vm.args-no-such-file-or-directory

cat: /home/hladmin/healthlocker/releases/1.0.3+86d55eb/vm.args: No such file or directory

注意:我们有一个小 bash 脚本,它读取可用的最新升级版本.deliver/releases并部署它:version.sh

问题:

有没有办法忽略文件​​的缺失vm.args继续部署?

或者如果需要文件来完成部署,是否有一些关于如何创建文件的文档?

注意:我们已经阅读了酿酒厂“运行时配置”文档:https ://github.com/bitwalker/distillery/blob/master/docs/Runtime%20Configuration.md ,遗憾的是没有明智的......

附加信息

环境

这个问题也被问到:https ://github.com/edeliver/edeliver/issues/234

4

1 回答 1

1

正如其他人所提到的,该vm.args文件是 BEAM 运行版本所必需的。默认文件由 distillery 在发布构建过程中创建,应位于releases/<version>/vm.args. 从您的日志输出看来,正在检查预期的目录。

  • 你能告诉我们的内容/home/hladmin/healthlocker/releases/吗?
  • 您能否确认vm.args在构建版本并提取它时(在升级过程之外)正在创建默认文件?

你还问:

或者如果需要文件来完成部署,是否有一些关于如何创建文件的文档?

如果使用默认文件诊断问题vm.args没有帮助您,您还可以编写自己的文件并将酿酒厂配置为使用该文件而不是默认文件。详细信息在酒厂配置文档中。简而言之,将vm_args设置添加到您的酿酒厂配置中,该配置应位于rel/config.exs(相对于您的项目根目录),例如:

environment :prod do
  set vm_args: "<path>/vm.args"
  [...]
end
于 2018-01-10T23:20:48.387 回答