打包

未匹配的标注

打包

通过之前的学习,我们项目已经开发完了,可以部署了。这章节我们学习一下部署的细节。

build 命令

buffalo提供了一个命令build,这个命令将我们的项目全部打包成一个可执行文件,包括但不仅限于:资产文件,数据库migrations文件,模板文件等。一个文件就能独立的提供服务,是不是很爽。

$ buffalo build
Buffalo version 0.14.10

--> cleaning up target dir
--> running node_modules/.bin/webpack
--> packing .../coke/actions/actions-packr.go
--> running go build -v -o bin/coke -ldflags -X main.version=b5dffda -X main.buildTime="2017-03-20T11:05:23-04:00"
--> cleaning up build
----> cleaning up buffalo_build_main.go
----> cleaning up a
----> cleaning up a/a.go
----> cleaning up a/database.go
----> cleaning up buffalo_build_main.go
----> cleaning up ...coke/actions/actions-packr.go

build完成,我们在项目的bin目录下就可以看到这个可执行文件。

自定义build

我们通过help可以帮助查看build的一些具体选项。

$ buffalo help build
Buffalo version 0.14.10

Builds a Buffalo binary, including bundling of assets (packr & webpack)

Usage:
  buffalo build [flags]

Aliases:
  build, b, bill

Flags:
  -c, --compress         compress static files in the binary (default true)
  -e, --extract-assets   extract the assets and put them in a distinct archive
  -h, --help             help for build
      --ldflags string   set any ldflags to be passed to the go build
  -o, --output string    set the name of the binary (default "bin/coke")
  -s, --static           build a static binary using  --ldflags '-linkmode external -extldflags "-static"' (USE FOR CGO)
  -t, --tags string      compile with specific build tags

自定义名称和目录

默认情况请build的文件是放在项目的bin目录下。名称是项目的名称。

我们可以通过-o或者-output参数,改变输出的目录及文件名。

$ buffalo build -o bin/cookies
--> cleaning up target dir
--> running node_modules/.bin/webpack
--> packing .../coke/actions/actions-packr.go
--> running go build -v -o bin/cookies -ldflags -X main.version="2017-04-02T08:32:28+02:00" -X main.buildTime="2017-04-02T08:32:28+02:00"
--> cleaning up build
----> cleaning up buffalo_build_main.go
----> cleaning up a
----> cleaning up a/a.go
----> cleaning up a/database.go
----> cleaning up buffalo_build_main.go
----> cleaning up ...coke/actions/actions-packr.go

也可以改变目录

$ # Put the app in my home directory, as "coke"
$ buffalo build -o ~/coke
--> cleaning up target dir
--> running node_modules/.bin/webpack
--> packing .../coke/actions/actions-packr.go
--> running go build -v -o ~/coke -ldflags -X main.version="2017-04-02T08:32:28+02:00" -X main.buildTime="2017-04-02T08:32:28+02:00"
--> cleaning up build
----> cleaning up buffalo_build_main.go
----> cleaning up a
----> cleaning up a/a.go
----> cleaning up a/database.go
----> cleaning up buffalo_build_main.go
----> cleaning up ...coke/actions/actions-packr.go

解压资产文件

上面说了,默认情况下build之后会生成了单一文件,包括了可执行文件和资产文件。但是实际项目过程中,我们可能需要将资产文件通过apache或者nginx这个的服务器代理静态文件。甚至将静态资产文件发布到cdn上。

buffalo提供了一个方法可以解压资产文件,用-e或者-extract-assets。

$ buffalo build -e
--> cleaning up target dir
--> running node_modules/.bin/webpack
--> build assets archive
--> disable self assets handling
--> running go build -v -o bin/coke -ldflags -X main.version="2017-04-02T08:45:58+02:00" -X main.buildTime="2017-04-02T08:45:58+02:00"
--> cleaning up build
----> cleaning up buffalo_build_main.go
----> cleaning up a
----> cleaning up a/a.go
----> cleaning up a/database.go
----> cleaning up buffalo_build_main.go
----> cleaning up ...coke/actions/actions-packr.go

默认情况下解压的资产文件也是在bin目录中。

$ ls -la bin
total 36280
drwxr-xr--@  4 markbates  staff   136B Apr  3 10:10 ./
drwxr-xr-x@ 20 markbates  staff   680B Apr  3 10:10 ../
-rwxr-xr-x@  1 markbates  staff    17M Apr  3 10:10 coke*
-rw-r--r--@  1 markbates  staff   691K Apr  3 10:10 coke-assets.zip

我们可以通过-o来指定解压的目录。

可执行文件

运行模式

默认情况下二进制执行文件会运行在开发者模式下。我们可以通过 GO_ENV 环境变量来指定运行模式。

$ GO_ENV=production ./coke

可用的命令

Default

默认运行你的web应用

migrate

migrate 子命令执行数据库迁移。

version

version 子命令可以查看二进制文件生成的版本信息。包括应用的名称,git的commit版本的SHA值,以及时间。

$ ./coke version
coke version 69b6a8b ("2017-04-03T10:19:46-04:00")

task

task 子命令可以执行buffalo项目中定义的task(如果定义了task的话)。

$ ./coke task greet

Hello World!

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
superwen
讨论数量: 0
发起讨论 查看所有版本


暂无话题~