- 编程语言支持
- 如何部署 Go 应用
- 检测
- 环境依赖
- godep 命令
- go get 命令
- Go 版本
- 二进制程序
- 应用类型
编程语言支持
如何部署 Go 应用
Flynn 使用 Go buildpack 来支持 Go 语言。
检测
当检测到部署的应用里包含以.go 为后缀的文件时,Flynn 会使用 Go buildpack。
环境依赖
Go buildpack 提供两个方法安装依赖的软件包,godep 和 go get,推荐使用 godep,这个命令可以将依赖的软件包存储在 git 仓库里,可以在重复性部署的时候自动解决依赖关系。
godep 命令
使用 godep 命令保存依赖的软件包,进入应用的目录,运行godep save命令,然后提交 Godeps 目录。当在 Flynn 里部署应用的时候,Godeps目录里的软件包会被自动安装。
go get 命令
如果应用的代码仓库里没有Godeps目录,buildpack 会自动下载 Mercurial 和 Bazaar,并运行 go get 命令安装所导入软件包的最新版本。这种方式比较慢,并且不能重复构建的过程,所以不可靠。
如果不使用godep,应用的根目录里需要有一个.godir文件。这个文件里包含应用软件包的完整路径,Flynn 读取这个参数来定位软件包并且给应用命名。例如:一个应用根目录下的.godir文件包含github.com/flynn/flynn,表示这个应用的名称为:flynn。
Go 版本
使用godep命令时,可以通过Godeps/Godeps.json里的GoVersion来指定 Go 的版本。
如果不使用 godep ,系统默认使用构建包里的最新版本。
二进制程序
应用目录下的所有主软件包都要被编译成二进制格式,并存放在/app/bin目录里,该路径包含在系统的PATH环境变量里。程序以包含它们的目录来命名。
如果应用的根目录下包含一个主软件包(main package),最终应用的名称会根据主软件包的路径得出。如果你使用godep,系统从Godeps/Godeps.json里读取ImportPath参数得到这个路径,如果你不使用godep,系统会读取.godir文件。
应用类型
在应用根目录下的 Procfile里声明应用支持的类型,一种应用类型占一行,格式:TYPE: COMMAND。
例如:应用的根目录下有一个主软件包,软件包路径为:github.com/flynn/myserver,那么,最终应用会被命名为:myserver,Procfile里的定义如下:
web: myserver
web类型的应用会有默认的 HTTP 路由,会在环境变量里定义服务器监听的通信端口(PORT)。
原文: http://doc.oschina.net/flynn?t=54096
