备注:

    首先需要安装 elixir 环境
 
1. 基本项目说明
参考项目:
https://github.com/rongfengliang/phoenix-rest-demo
2. 项目说明
备注: 主要是插件的配置

 mix.exs 

  defp deps do
[
{:phoenix, "~> 1.3.2"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.2"},
{:postgrex, ">= 0.0.0"},
{:mariaex, "~> 0.8.4"},
{:phoenix_html, "~> 2.10"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"},
{:distillery, "~> 1.5", runtime: false} # 需要添加的构建包
]
end
 
3. 使用
a. 初始化

首次使用需要进行环境的初始化

mix release.init

修改config/prod.exs

config :hello, Hello.Endpoint,
# http: [:inet6, port: {:system, "PORT"}],
http: [port: 4000],
cache_static_manifest: "priv/static/cache_manifest.json",
server: true # 比较重要的参数,启动的时候需要 b. 构建打包 mix release or MIX_ENV=prod mix release (生产环境建议) 备注: 可以指定环境 dev、 prod (默认为dev),实际中我们需要添加 MIX_ENV=prod mix release c. 使用生成的软件包 Interactive: _build/prod/rel/hello/bin/hello console
Foreground: _build/prod/rel/hello/bin/hello foreground
Daemon: _build/prod/rel/hello/bin/hello start
4. 生成项目结构
生成的项目在 _build/prod/rel/hello ,实际使用docker 或者类似的工具进行运行

备注:默认prod 版本,运行时环境也会为我们打包,运行是比较简单的,可以参考3.c

.
├── bin # 应用启动目录
├── erts-9.3 # 运行是环境
│ ├── bin
│ ├── include
│ │ └── internal
│ │ ├── gcc
│ │ ├── i386
│ │ ├── libatomic_ops
│ │ ├── ppc32
│ │ ├── pthread
│ │ ├── sparc32
│ │ ├── sparc64
│ │ ├── tile
│ │ ├── win
│ │ └── x86_64
│ ├── lib
│ │ └── internal
│ └── src
├── lib # 依赖的包
│ ├── asn1-5.0.5
│ │ ├── ebin
│ │ └── priv
│ │ └── lib
│ ├── compiler-7.1.5
│ │ └── ebin
│ ├── connection-1.0.4
│ │ └── ebin
│ ├── cowboy-1.1.2
│ │ └── ebin
│ ├── cowlib-1.0.2
│ │ ├── ebin
│ │ └── include
│ ├── crypto-4.2.1
│ │ ├── ebin
│ │ └── priv
│ │ ├── lib
│ │ └── obj
│ ├── db_connection-1.1.3
│ │ └── ebin
│ ├── decimal-1.5.0
│ │ └── ebin
│ ├── ecto-2.2.10
│ │ └── ebin
│ ├── eex-1.6.4
│ │ └── ebin
│ ├── elixir-1.6.4
│ │ └── ebin
│ ├── gettext-0.15.0
│ │ └── ebin
│ ├── hello-0.0.1
│ │ ├── consolidated
│ │ ├── ebin
│ │ └── priv
│ │ ├── gettext
│ │ │ └── en
│ │ │ └── LC_MESSAGES
│ │ ├── repo
│ │ │ └── migrations
│ │ └── static
│ │ ├── css
│ │ ├── images
│ │ └── js
│ ├── iex-1.6.4
│ │ └── ebin
│ ├── kernel-5.4.3
│ │ ├── ebin
│ │ └── include
│ ├── logger-1.6.4
│ │ └── ebin
│ ├── mariaex-0.8.4
│ │ └── ebin
│ ├── mime-1.2.0
│ │ └── ebin
│ ├── phoenix-1.3.2
│ │ ├── ebin
│ │ └── priv
│ │ ├── static
│ │ └── templates
│ │ ├── phoenix.gen.channel
│ │ ├── phoenix.gen.html
│ │ ├── phoenix.gen.json
│ │ ├── phoenix.gen.model
│ │ ├── phx.gen.channel
│ │ ├── phx.gen.context
│ │ ├── phx.gen.embedded
│ │ ├── phx.gen.html
│ │ ├── phx.gen.json
│ │ ├── phx.gen.presence
│ │ └── phx.gen.schema
│ ├── phoenix_ecto-3.3.0
│ │ └── ebin
│ ├── phoenix_html-2.11.2
│ │ ├── ebin
│ │ └── priv
│ │ └── static
│ ├── phoenix_pubsub-1.0.2
│ │ └── ebin
│ ├── plug-1.5.0
│ │ └── ebin
│ ├── poison-3.1.0
│ │ └── ebin
│ ├── poolboy-1.5.1
│ │ └── ebin
│ ├── postgrex-0.13.5
│ │ └── ebin
│ ├── public_key-1.5.2
│ │ ├── ebin
│ │ └── include
│ ├── ranch-1.3.2
│ │ └── ebin
│ ├── runtime_tools-1.12.5
│ │ ├── ebin
│ │ ├── include
│ │ └── priv
│ │ └── lib
│ ├── sasl-3.1.1
│ │ └── ebin
│ ├── ssl-8.2.5
│ │ └── ebin
│ └── stdlib-3.4.5
│ ├── ebin
│ └── include
└── releases # release 版本
└── 0.0.1
├── commands
├── hooks
│ ├── post_configure.d
│ ├── post_start.d
│ ├── post_stop.d
│ ├── post_upgrade.d
│ ├── pre_configure.d
│ ├── pre_start.d
│ ├── pre_stop.d
│ └── pre_upgrade.d
└── libexec
└── commands 同时在 releases/0.0.1 会有一个tar.gz 的包,这个是直接可以拷贝运行的软件包
 
5. 总结
总的来说,还是比较简单的,实际使用中我们可以集成docker,很方便
6 . 运行截图
 
7 . 参考资料
https://github.com/bitwalker/distillery
https://hexdocs.pm/phoenix/deployment.html
https://github.com/rongfengliang/phoenix-rest-demo
 
 
 
 

使用distillery 构建专业的 phoenix 项目软件包的更多相关文章

  1. 使用Maven构建RichFaces 4.x项目

    使用Maven构建RichFaces 4.x项目 目录 开始之前 第一步 - 创建Maven项目 第二布 - 添加依赖文件 第三步 - 配置RichFaces 第四步 - 创建显示页面 开始之前 本文 ...

  2. 三、使用Maven构建简单的java项目

    前边,我刚搭建了Maven环境,还有给大家推荐了学习资源,这个小节,我们来就来,,简单的玩玩maven. 1.所需工具: 1.Eclipse     2.apache-maven-3.3.9   3. ...

  3. yoeman构建Asp.net core项目并且实现分层

    在Mac上开发使用yoeman构建Asp.net core项目并且实现分层引用 1.Yoeman? yoeman是一个自动化脚手架工具.它提供很多generator,generator相当于Visua ...

  4. Maven构建真正的J2EE项目

    今天同事问起我眼下用Maven构建的多模块项目架构和曾经用Eclipse创建的Web项目的问题.以下将讲一下使用maven搭建多模块的J2ee项目,以及採用这样的方式搭建项目对日后项目的水平拆分和垂直 ...

  5. Gradle学习之构建java与web项目

    一.使用Gradle的java插件构建Java项目 1)Gradle插件包含了若干个接口定义和已有的任务项,语法结构:apply plugin:'插件名' ,此处我们定义插件 apply plugin ...

  6. eclipse构建maven的web项目(转载)

    eclipse构建maven的web项目 分类: java opensource2013-12-25 16:22 43人阅读 评论(0) 收藏 举报 maven框架webappwebeclipse 使 ...

  7. Gradle入门(3):构建第一个Java项目

    Gradle插件通过引入特定领域的约定和任务来构建你的项目.Java插件是Gradle自身装载的一个插件.Java插件提供的基本功能远比源代码编译和打包多.它为你的项目建立了一个标准的项目布局,并确保 ...

  8. Maven实现项目构建直接部署Web项目到Tomcat

    Maven实现项目构建直接部署Web项目到Tomcat配置如下: 1.Tomcat的用户及权限配置:在conf目录下,找到tomcat-users.xml,添加manager权限的用户. <ro ...

  9. Jenkins构建Maven多模块项目时,单独编译子模块,并且不触发构建其它模块

    一.Jenkins构建Maven多模块项目时,单独编译子模块 配置: 1.Root POM指向父pom.xml 2.Goals and options指定构建模块的参数:mvn -pl jsoft-w ...

随机推荐

  1. 英语每日阅读---4、VOA慢速英语(翻译+字幕+讲解):专家:城市发展将加剧住房危机

    英语每日阅读---4.VOA慢速英语(翻译+字幕+讲解):专家:城市发展将加剧住房危机 一.总结 一句话总结:城市化(越来越多的人会住进城市)是必然趋势,人口增长也是必然趋势,人口增长必然会加大住房危 ...

  2. spring mvc:视图解析器

    ModelAndView对象中的view对象,可以使用字符串来让Spring框架进行解析获得适合的视图.而解析View的就是ViewResolver技术. ViewResolver的定义如下: pub ...

  3. linux中压缩、解压缩命令详解

    tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的 ...

  4. ActiveMQ教程(简介与安装)

    ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久 ...

  5. C# 与vb.net 的Dictionary(字典)的键、值排序

    项目中可能需要用到Dictionary 排序,于是先做了一个小demo ,网上搜索真的没有能满足我需要的,都是类似的,于是理解改造,一上午就在查找,实践中过去了.现在把它实现了,把代码贴出来,算是一个 ...

  6. Yii ExtendedActiveRecord 增强版 ActiveRecord 增加多数据库连接绑定功能

    ExtendedActiveRecord 继承自 CActiveRecord,因此基础功能与 CActiveRecord 无异 为添加对多数据库连接的支持,增加了对 connectionName() ...

  7. Gridview 尾部添加总计

    1.GridView控件showfooter的属性=true 2. int totalZJ, iZJ; protected void GridView1_RowDataBound(object sen ...

  8. 解决chrome报Not allowed to load local resource错误的方法

    最近项目中遇到了关于图片的更改->保存->本地读取 在本地读取的环节上面出现了错误,一开始用的是直接本地路径,但是在页面上调试的出现了下面的错误,他的路径还是相对路径,下图所示: Goog ...

  9. LINUX文件的权限

    一.权限设定的意义:系统最底层安全设定方法之,保证文件可以被可用的用户做相应操作. 二.文件权限的查看(alias) 命令:ls ls -l file ## 查看文件属性 ls -ld mkdir   ...

  10. about system (pause) in cpp

    Which is best way to pause the console in C++ programs? using cin.get() or using system("pause& ...