使用distillery 实现版本的动态升级&& 动态降级
备注:
https://github.com/rongfengliang/phoenix-rest-demo.git
备注: 此项目已经以及配置distillery了,可以参考文档
实际上主要是进行mix.exs 版本修改以及mix release --upgrade 参数使用
a. 0.0.1 版本
mix.exs
def project do
[
app: :hello,
version: "0.0.1",
elixir: "~> 1.4",
elixirc_paths: elixirc_paths(Mix.env),
compilers: [:phoenix, :gettext] ++ Mix.compilers,
start_permanent: Mix.env == :prod,
aliases: aliases(),
deps: deps()
]
end
/web/templates/page/index.html.eex
修改部分代码:
<div class="row marketing">
<div class="col-lg-6">
<h4>dalongdmeo v 0.0.1</h4>
<ul>
构建:
MIX_ENV=prod mix release
b. 0.0.2 升级版本修改
mix.exs
def project do
[
app: :hello,
version: "0.0.2",
elixir: "~> 1.4",
elixirc_paths: elixirc_paths(Mix.env),
compilers: [:phoenix, :gettext] ++ Mix.compilers,
start_permanent: Mix.env == :prod,
aliases: aliases(),
deps: deps()
]
end
/web/templates/page/index.html.eex
修改部分代码:
<div class="row marketing">
<div class="col-lg-6">
<h4>dalongdmeo v 0.0.2</h4>
<ul>
构建:
MIX_ENV=prod mix release --upgrade
c. 构建结果
参考下图:
a. 启动一个版本(0.0.2)
因为有两个构建,默认启动是最新的版本
_build/prod/rel/hello/bin/hello foreground
结果如下图:
b. 演示降级
_build/prod/rel/hello/bin/hello downgrade 0.0.1
Release 0.0.1 not found, attempting to unpack releases/0.0.1/hello.tar.gz
Unpacked successfully: "0.0.1"
Release 0.0.1 is already unpacked, now installing.
Installed Release: 0.0.1
Made release permanent: "0.0.1"
结果如下图:
功能比较棒,能够实现代码的热切换,对于业务不能停顿的系统特别有用
https://github.com/rongfengliang/phoenix-rest-demo
https://hexdocs.pm/distillery/walkthrough.html#content
使用distillery 实现版本的动态升级&& 动态降级的更多相关文章
- Android 插件化 动态升级
最新内容请见原文:Android 插件化 动态升级 不少朋友私信以及 Android开源交流几个 QQ 群 中都问到这个问题,这里简单介绍下 1.作用 大多数朋友开始接触这个问题是因为 App 爆棚了 ...
- ffmpeg 2.8.1 最新版本 VS2013 可调式动态库
ffmpeg 2.8.1 最新版本 VS2013 可调式动态库 由于大多数初学者都在想尽各种版本寻求VC编译调试ffmpeg的版本,我也曾经移植过几个版本的ffmpeg到VC上编译.: 链接所需动态库 ...
- 结合rpyc使用python实现动态升级的方法
动态升级,就是程序不退出的情况下,将其代码更新的策略.假设集群含有多个机器,然后每个机器部署一套程序,当升级的时候就要去所有的上面部署一把. (1)有个包装程序专门负责接口并检查是否需要更新,当需要更 ...
- 【大话QT之十二】基于CTK Plugin Framework的插件版本号动态升级
应用需求: 某些场景下我们可能面临这种问题,在执行着的应用程序不能终止的情况下,升级某个功能(或添,或减.或改动).在不採用CTK Plugin Framework插件系统架构的情况下这将是非常困难的 ...
- Quartz.NET 3.0.7 + MySql 实现动态调度作业+动态切换版本+多作业引用同一程序集不同版本+持久化+集群(一)
原文:Quartz.NET 3.0.7 + MySql 实现动态调度作业+动态切换版本+多作业引用同一程序集不同版本+持久化+集群(一) 前端时间,接到领导任务,写了一个调度框架.今天决定把心路历程记 ...
- mybatis操作动态表+动态字段+存储过程
存储过程 statementType="CALLABLE" <!-- 计算金额存储过程--> <update id="getCalcDistributo ...
- 出错场景是升级oracle驱动,将版本从ojdbc14升级到ojdbc6,hibernate执行原生态sql语句会报如下错误
出错场景是升级oracle驱动,将版本从ojdbc14升级到ojdbc6,hibernate执行原生态sql语句会报如下错误:org.hibernate.MappingException: No Di ...
- 关于DB2版本、补丁升级和回退的总结[转载]
首先介绍几个概念 RELEASE的升级就是版本升级,例如9.1→9.5→9.7→10.1,可以跳版本升级,例如9.1→10.1 FIX PACK简称FP,就是打补丁,例如9.7.1→9.7.2,每个版 ...
- C# 反射,动态类,动态方法
1.动态类名,固定方法名,例如.调用不同类下边的GetById()方法: //项目需要引用Miscorsoft.CSharp类库,否则会报错:找不到编译动态表达式所需的一个或者多个类型.//引用这两个 ...
随机推荐
- 为什么使用Lambda表达式(翻译版)
简介 如上图所示,绿色框中就是Lambda表达式,是可以执行的代码块.Lambda表达式是很多编程语言的特征,比如Lisp, Python, Scala等. 但是对于java,在8以后才支持这种写法. ...
- tail命令 | head命令
tail -f -n 50 log.txt 循环读取文件log.txt的后50行 head -n 50 log.txt 显示文件的前n行
- 转:CentOS 7使用nmcli配置双网卡聚合LACP
进入CentOS 7以后,网络方面变化比较大,例如eth0不见了,ifconfig不见了,其原因是网络服务全部都由NetworkManager管理了,下面记录下今天下午用nmcli配置的网卡聚合,网络 ...
- IOS-CALayer(图层)
BWLayer.m // // BWLayer.m // IOS_0222_CALayer // // Created by ma c on 16/2/23. // Copyright © 2016年 ...
- 5G信令(就是用户身份信息)——手机开机后,先从USIM中读取之前运营商分配的临时身份信息GUTI/TMSI,发送携带该身份信息的信令给基站,请求接入运营商网络。
5G时代,跟IMSI-CATCHER SAY GOODBYE from:https://unicorn.360.com/blog/2018/04/18/GoodBye_5G_IMSI-Catcher/ ...
- angularJS---service
service ng的服务是这样定义的: Angular services are singletons objects or functions that carry out specific ta ...
- Java进阶7 并发优化2 并行程序设计模式
Java进阶7 并发优化2 并行程序设计模式20131114 1.Master-worker模式 前面讲解了Future模式,并且使用了简单的FutureTask来实现并发中的Future模式.下面介 ...
- C# 中移动文件到指定位置
根据文件后缀名称将文件移动到指定的文件夹下面,具体代码如下: demo中使用的是 .png 具体的情况根据你的需求可以更改 using System; using System.IO; public ...
- mac下解决mysql乱码问题
问题描述:在window平台下面数据库插入.已经查找都是很正常的,但是到mac下面查找.插入就不正常了,之后感觉是mysql的问题然后网上搜索学习了下,果然是mysql的问题.解决方案:首先你要先去看 ...
- operator模块常见方法介绍
operator.concat(a, b) 对于 a.b序列,返回 a + b(列表合并) --------------------------------- operator.countOf(a, ...