vfsgen 是一个用于将静态文件打包到 Go 程序中的工具。它将文件系统(如静态文件、模板等)生成 Go 代码,使得这些资源可以直接嵌入到可执行文件中。
第一步 先进行安装
go get -u github.com/shurcooL/vfsgen
- 创建生成代码的 Go 文件
在你的项目中创建一个新的 Go 文件,例如 generate_static.go,并添加以下内容:
// +build ignore
package main
import (
"log"
"net/http"
"github.com/shurcooL/vfsgen"
)
func main() {
err := vfsgen.Generate(http.Dir("static"), vfsgen.Options{
Filename: "static_vfsdata.go", // 生成的 Go 文件名
PackageName: "main", // 包名,可以根据你的情况修改
})
if err != nil {
log.Fatalln(err)
}
}
- 生成静态文件的 Go 代码
在终端运行以下命令来生成打包的 Go 文件:
go run generate_static.go
执行成功后,你会在项目中看到一个名为 static_vfsdata.go 的文件。这个文件包含了所有静态文件的 Go 代码,可以直接嵌入到你的应用程序中。
//router.Static("/static", "./static") 原来的方式
// 提供静态文件处理
router.StaticFS("/static", tmp.Assets2)
这样处理完成之后进行打包的二进制文件就不需要再次上传这个目录了
GOOS=linux GOARCH=amd64 go build -o go-mvc-linux
服务器端运行
export GIN_MODE=release HTTP_PORT=8089 && ./go-mvc-linux