问题标签 [distillery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
elixir - 酒厂版本的配置
我浏览了https://hexdocs.pm/distillery/getting-started.html文档,但无法运行基本的 Phoenix 应用程序。这就是我所做的:
比我更新mix.exs
文件以包含酿酒厂部分:
比我运行以下命令:
结果是这样的:
据我了解,我应该能够使用以下命令启动 Phoenix 应用程序
但是当我这样做时,我无法通过 URL 上的浏览器访问它http://localhost:4000
是我设置错误还是我误解了系统?如何启动新版本?
git - `mix edeliver build release` 在 GitLab CI 运行器中运行时将过时的代码推送到构建服务器
我正在尝试将我的 GitLab CI 配置为自动构建我的 Elixir 应用程序并在每次master
分支成功时创建新版本。但是,每当涉及到部署时,它都会由于构建服务器上的旧 Git 存储库而失败。
我的.gitlab-ci.yml
配置:
CI 上的输出edeliver
(应用程序构建器是 Distillery):
当我在本地运行时,mix edeliver build
一切都很顺利,但我找不到通过 CI 运行时失败的原因。
postgresql - Phoenix Elixir Distillery 未使用正确的数据库连接
我正在尝试使用 Distillery 构建 Phoenix 应用程序,但是当我尝试启动已编译的应用程序时,我不断收到关于无法完善数据库的错误消息。
现在上面的细节不是我在prod.ex
我的数据库网址在哪里DATABASE_URL=postgres://glitchr:password@db:5433/glitchr
这是为什么?我怎样才能调试我不正确的东西?
deployment - 使用 edeliver 和 distillery 构建升级版本
版本:(构建和生产系统都相同)
灵药:1.4.0
操作系统:Ubuntu 14.04 LTS
酒厂配置:
交付配置:
我的初始版本成功mix edeliver update production --branch=development --start-deploy
并且应用程序运行良好。当我尝试热代码重新加载时,
mix edeliver build upgrade --branch=development
它因命令而失败
build command requires --from= or --with argument.
当有或我错过任何配置时,不edeliver
应该照顾这个吗?AUTO_VERSION
此外,执行命令mix edeliver upgrade production --branch=development --verbose
会导致错误
elixir - 从 elixir 应用程序的版本中进行 Ecto 迁移
我已经发布了我的 elixir 应用程序。
当应用程序启动时,它开始使用 DB 运行受监督的任务。
未迁移数据库时,任务保持错误,应用程序终止。
我阅读了http://blog.firstiwaslike.com/elixir-deployments-with-distillery-running-ecto-migrations/,https://hexdocs.pm/distillery/running-migrations.html,并尝试实现以下迁移功能他们,但失败了,因为需要启动应用程序来加载应用程序的配置,这会使命令终止。
当我在Application.get_all_env(:my_app)
没有启动我的应用程序的情况下运行时,它返回空列表[]
。无论如何都可以在Ecto.Migrator.run(MyApp.Repo, path, :up, all: true)
不启动应用程序的情况下运行?
elixir - 在生产模式下在 Phoenix 中读取文件
我有 Phoenix 应用程序(我使用 --api 标志创建它),它有一些额外的数据来处理我存储在priv/data/filters.csv
.
所以它在dev
模式下工作正常,我可以像这样读取这个文件:File.stream!("priv/data/filters.csv")
但是一旦使用mix edeliver update
这个文件交付应用程序就无法再访问了。
我可以在 build 目录中看到这个文件夹,但是应用交付后没有这个文件夹priv
。我不确定为什么它没有被复制到传递文件夹。
我做错了什么?我需要在交付过程后复制这些文件吗?在哪里可以存储我必须在 prod 模式下使用的文件?
deployment - 如何避免 Edeliver 部署错误:“vm.args:没有这样的文件或目录”?
语境
我们正在尝试使用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 应用程序
运行以下命令(构建升级):
即“从以前的 git 版本升级到当前版本”
到目前为止,一切都很好。“发布成功搭建! ”
错误: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 ,遗憾的是没有明智的......
附加信息
环境
- 本地主机:运行 Elixir 1.4.2 的 Mac
- 构建主机:运行 Elixir 1.4.5 的Ubuntu 16.04.2 LTS
mix.exs
文件:https ://github.com/healthlocker/healthlocker/blob/continuous-delivery/mix.exsedeliver
版本:1.4.4
- 构建工具:
distillery
版本:1.4.0
- 伞项目:是的。
elixir - 与酿酒厂一起交付:如何设置“开始”命令以使用 systemctl
我正在使用edeliver
由distillery
.
我还成功地创建了systemd.service
从命令行启动、停止、重新启动等发布的文件。
但是该mix edeliver start production
命令似乎systemd
通过普通的旧好的bin/my_app start
shell 命令绕过了发行版。我想要的是systemd
始终使用,即使是热上传,因为它(不像upstart
)确实提供了reload
功能。
我找不到我该告诉谁来systemd
[重新]开始发布。应该是delivery
战略吗?还有什么?我知道这个问题不适合 SO,但我只是迷路了。
那么:我可以强制使用edeliver
来启动发布吗?如果是,如何?distillery
systemd
elixir - 可以在 Phoenix 中禁用 CodeReloader 吗?
( CodeReloader
in dev
mode) 正在使用Mix.Config
. 这在使用酒厂版本时失败,dev_mode
因为mix
在版本中不可用。
是否可以在 Phoenix 应用程序中完全禁用CodeReloader
,这样我的应用程序就不会在dev_mode
发布时无法启动?
elixir - VPS 上的 Elixir 应用程序无法在守护进程模式下从 ssh 启动
我已经用 Phoenix + Elixir 构建了一个应用程序,并将其部署到带有酒厂的服务器。一切正常,直到我尝试创建一些 bash 脚本来自动部署,仅供参考:我已经尝试过 edeliver,但它不符合我的需要。当我登录并运行时尝试在我的 VPS 上以守护程序模式运行应用程序时,我总是成功
但是,当我使用远程命令运行 ssh
它无法启动,shell 屏幕上没有输出。它只是行不通。
但是,如果我在前台模式下运行
它将成功启动应用程序并显示我一直nohup
在前台模式下尝试使用的运行日志,但它仍然显示运行日志,而我需要运行另一个命令
运行 SSH 远程命令是否有任何必需的步骤,可能是一些环境设置?