标签: distillery

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

上下文

我们正尝试将edeliverPhoenix 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
Run Code Online (Sandbox Code Playgroud)

即"构建从以前的git版本到当前版本的升级"

到现在为止还挺好." 发布成功! "

edeliver升级 - 构建 - 成功

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

当我们尝试部署升级时:

mix edeliver deploy upgrade to production --version=1.0.3+86d55eb --verbose
Run Code Online (Sandbox Code Playgroud)

vm.args-没有这样的文件,或目录

cat: /home/hladmin/healthlocker/releases/1.0.3+86d55eb/vm.args: No such file or directory
Run Code Online (Sandbox Code Playgroud)

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

题:

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

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

deployment elixir phoenix-framework edeliver distillery

10
推荐指数
1
解决办法
393
查看次数

可以在 Phoenix 禁用 CodeReloader 吗?

(模式CodeReloaderdev)正在使用Mix.Config. 使用 distillery 版本时会失败,dev_mode因为mix在版本中不可用。

是否可以CodeReloader在 Phoenix 应用程序中完全禁用,以便我的应用程序不会在dev_mode发布时无法启动?

elixir phoenix-framework distillery

4
推荐指数
1
解决办法
1447
查看次数

Edeliver/Distillery 因“bash: line 10: mix: command not found”错误而失败?

运行时出现此错误 mix edeliver build release production --verbose

A remote command failed on:
  deploy@80.111.111.80
Run Code Online (Sandbox Code Playgroud)

但是当我登录服务器时,Elixir(以及 Mix)似乎安装得很好。

ssh deploy@80.111.111.80
deploy@80.111.111.80:~$ mix -v
Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]

Mix 1.5.0
Run Code Online (Sandbox Code Playgroud)

它似乎工作正常。Edeliver 在查找 Elixir 安装时遇到问题是什么?我使用 asdf 版本管理器安装 Elixir 和 Erlang。

elixir phoenix-framework edeliver distillery

4
推荐指数
2
解决办法
1847
查看次数

我如何确保 Distillery 在发行版中包含 Erlang inets?

我的应用程序在尝试运行版本时遇到了这个致命问题:

** (MatchError) no match of right hand side value: {:error, {:inets, {'no such file or directory', 'inets.app'}}}
Run Code Online (Sandbox Code Playgroud)

在我的本地主机上运行它时它工作正常mix,但是 distillery 2 版本有这个问题。

erlang-inets从 erlang 解决方案存储库安装了 ubuntu 软件包并做了另一个mix release,但这似乎没有解决它。

我缺少什么?

elixir-mix elixir distillery

2
推荐指数
1
解决办法
391
查看次数

在生产模式下以Phoenix读取文件

我有Phoenix应用程序(我使用--api标志创建了它),其中包含一些处理我存储在中的请求所需的其他数据priv/data/filters.csv

因此,它在dev模式下可以正常工作,我可以像这样读取该文件:File.stream!("priv/data/filters.csv"),但是使用mix edeliver update该文件交付应用后,将无法再访问它。

我可以在构建目录中看到该文件夹​​,但是在交付应用程序之后,没有该文件夹priv。我不确定为什么不将其复制到传递文件夹中。

我做错了什么?交付过程后是否需要复制这些文件?在哪里可以存储必须以生产方式使用的文件?

elixir phoenix-framework edeliver distillery

1
推荐指数
1
解决办法
2402
查看次数