我有main.go
看起来像这样
func main() {
app := config.App()
env := app.Env
gin := gin.Default()
gin.Use(CORSMiddleware())
db := app.Db
route.Setup(env,db, gin)
gin.Run(":" + env.Port)
}
func CORSMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
c.Writer.Header().Set("Access-Control-Allow-Origin", "http://localhost:3000")
c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With")
c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT, DELETE")
if c.Request.Method == "OPTIONS" {
c.AbortWithStatus(204)
return
}
c.Next()
}
}
字符串
我想部署这个vercel
。
我使用了一些资源:
- https://github.com/TBXark/g4vercel
- https://vercel.com/docs/concepts/functions/serverless-functions/runtimes/go的
- How to use Go Gin in vercel serveless functions?的
但我仍然不确定如何做到这一点。有人能帮帮我吗?
3条答案
按热度按时间jecbmhm31#
首先创建一个文件夹并将
main.go
文件移动到其中,然后在此处创建另一个文件,api/index.go
,其内容如下:字符串
现在你需要在项目的根目录下创建两个文件,第一个是
vercel.json
,内容如下:型
第二,创建
go.mod
文件,并尝试运行此命令来初始化Go模块!型
最后尝试运行此命令以安装所有必需的文件和依赖项
型
好了,现在要部署你的应用程序,只需在终端中运行以下命令:
型
你的应用现在应该部署在
Vercel
上作为无服务器,你可以在生成的URL访问它!祝你好运!
iecba09b2#
以下是在Vercel上部署Gin API服务器的关键步骤:
1.使用Go代码创建一个API/文件夹。
1.添加一个go.mod文件来指定依赖项。
1.创建一个API/go.mod文件:
字符串
1.添加一个API/main.go文件和你的服务器代码:
型
1.创建api/vercel.json配置文件:
型
1.推送到GitHub/GitLab仓库
1.将存储库导入Vercel并部署
1.在Vercel上为DATABASE_URL等设置ENV变量
这将把你的Go服务器构建成Vercel上的无服务器函数应用程序。然后,您可以像普通Gin一样添加路由、中间件等。
am46iovg3#
你的
main.go
代表了一个基于Go中Gin框架的完全运行的应用程序,你想要deploy it on Vercel。但是,Vercel并不是为托管传统的Web服务器(例如您的Gin应用程序)而设计的。这意味着您需要将应用程序重构为无服务器函数来实现这一点。首先将每个Handler分隔到自己的文件中:无服务器函数被设计成简单的、单一用途的代码片段。在当前的设置中,
gin
示例可能处理了多个路由。这些都应该提取到自己的无服务器函数中,每个都在一个单独的.go
文件中。例如,如果您有一个路由
/api/users
的处理程序,则可以创建一个名为api-users.go
的文件。字符串
然后更新您的
vercel.json
configuration file:您需要告诉Vercel这些新的.go
文件是无服务器函数,它们应该被这样对待。型
"api/users.go"
应该匹配无服务器函数文件的文件名和位置。调整它以匹配您存储无服务器函数文件的位置。您还需要将
go.mod
文件添加到目录的根目录中,以告知Vercel需要安装哪些依赖项。型
最后,将你的代码推送到你的GitHub/GitLab/Bitbucket存储库,并将其连接到Vercel。Vercel将部署你的Go无服务器函数。
如何在本地运行?
要在本地运行Vercel无服务器函数,您可以使用Vercel's own command-line interface (CLI),其中包含一个开发命令(
vercel dev
)来模拟本地计算机上的Vercel环境。型
您可以在
http://localhost:3000
(或终端中显示的任何端口)访问无服务器功能。无服务器函数的路径将与项目中的函数文件路径相对应。例如,如果你在
api/users.go
中有一个无服务器的函数,你可以通过转到http://localhost:3000/api/users
来访问这个函数。其他示例:“#DevHack: Specifying what to run on Vercel dev",来自Elio Struyf。