如何避免Edeliver部署错误:" vm.args:没有这样的文件或目录"?

时间:2017-08-03 08:35:09

标签: deployment elixir phoenix-framework edeliver distillery

上下文

我们正在尝试使用edeliver部署"热升级"凤凰Web应用程序到远程虚拟机实例。

我们的目标是建立一个"升级"每次版本的应用程序,以便应用程序可以"热"在没有停机的情况下升级生产。

我们成功地做到了这一点"热门升级"在" Hello World"凤凰app: https://github.com/nelsonic/hello_world_edeliver在构建通过时从Travis-CI自动部署 。见:https://travis-ci.org/nelsonic/hello_world_edeliver/builds/259965752#L1752

所以,在理论中,这种技术应该适用于我们的"真实的"应用

尝试部署" Real" Phoenix App使用Edeliver

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

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

即。 "构建从上一个git修订版升级到当前版本"

的升级

到目前为止,这么好。 " 发布成功!"

edeliver-upgrade-build-successful

错误: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文件而继续部署?

如果文件必需以完成部署,是否有关于如何创建文件的文档?

  

注意:我们已经阅读了酿酒厂"运行时配置" docs:https://github.com/bitwalker/distillery/blob/master/docs/Runtime%20Configuration.md并且可悲的是没有更聪明......

其他信息

环境

此问题也在https://github.com/edeliver/edeliver/issues/234

上提出

1 个答案:

答案 0 :(得分:0)

正如其他人所说,BEAM运行发布需要vm.args文件。在发布构建过程中,由酿酒厂创建默认文件,该文件应位于releases/<version>/vm.args中。从您的日志输出看起来好像正在检查预期的目录。

  • 您能告诉我们/home/hladmin/healthlocker/releases/的内容吗?
  • 您是否可以确认在构建版本并将其解压缩时(在升级过程之外)创建了默认的vm.args文件?

您还问:

  

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

如果使用默认vm.args文件诊断问题无法到达任何地方,您也可以编写自己的文件并配置酒厂使用该文件而不是默认文件。详细信息请参见distillery configuration docs。简而言之, 将vm_args设置添加到您的酿酒厂配置中,该设置应位于rel/config.exs(相对于您的项目根目录),例如:

environment :prod do
  set vm_args: "<path>/vm.args"
  [...]
end