PocketBase 是一个用 Go 编写的开源后端框架,主要特性包括:

  • 内嵌数据库(使用 SQLite),支持 实时订阅
  • 内置的 文件和用户管理
  • 方便使用的 管理后台界面(Admin dashboard UI)
  • 简洁易用的 类 REST API 接口

📚 文档和使用示例请访问:https://pocketbase.io/docs

⚠️ 注意事项 PocketBase 当前仍处于积极开发中,在发布 v1.0.0 之前不保证向后兼容性


API SDK 客户端

使用官方提供的 SDK 客户端是与 PocketBase Web API 交互的最简单方式:

你也可以参考 https://pocketbase.io/docs/how-to-use/ 上的推荐做法。


使用概览

作为独立应用运行

你可以从 Releases 页面 下载对应平台的预编译可执行文件。下载后解压,并在解压目录下运行:

  1. ./pocketbase serve

这些预编译可执行文件基于 examples/base/main.go 文件构建,并默认启用了 JavaScript 虚拟机插件,支持用 JavaScript 扩展 PocketBase(详见 使用 JavaScript 扩展)。


作为 Go 框架或工具包使用

PocketBase 也可以作为一个普通的 Go 库包使用,支持你自定义业务逻辑,最终仍然构建为一个可移植的单一可执行文件。

以下是一个最小的示例:

  1. 安装 Go 1.23 以上版本(如果你还没安装的话)

  2. 创建一个项目文件夹,并在其中添加 main.go 文件,内容如下:

  1. package main
  2. import (
  3. "log"
  4. "github.com/pocketbase/pocketbase"
  5. "github.com/pocketbase/pocketbase/core"
  6. )
  7. func main() {
  8. app := pocketbase.New()
  9. app.OnServe().BindFunc(func(se *core.ServeEvent) error {
  10. // 注册一个新的路由:GET /hello
  11. se.Router.GET("/hello", func(re *core.RequestEvent) error {
  12. return re.String(200, "Hello world!")
  13. })
  14. return se.Next()
  15. })
  16. if err := app.Start(); err != nil {
  17. log.Fatal(err)
  18. }
  19. }
  1. 初始化依赖:
  1. go mod init myapp && go mod tidy
  1. 启动应用:
  1. go run main.go serve
  1. 构建静态链接的可执行文件:
  1. CGO_ENABLED=0 go build
  2. ./myapp serve

📖 更多内容详见 使用 Go 扩展


构建和运行仓库中的 main.go 示例

如果你希望像官方发布的预编译版本一样,构建一个最小化的独立可执行文件,可以这样做:

  1. 安装 Go 1.23+
  2. 克隆或下载 PocketBase 仓库
  3. 进入目录 examples/base
  4. 运行以下命令构建(参考 Go 的交叉编译环境变量):
  1. GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build
  1. 运行生成的可执行文件:
  1. ./base serve

当前纯 Go 实现的 SQLite 驱动支持的构建目标平台包括:

  1. darwin amd64
  2. darwin arm64
  3. freebsd amd64
  4. freebsd arm64
  5. linux 386
  6. linux amd64
  7. linux arm
  8. linux arm64
  9. linux ppc64le
  10. linux riscv64
  11. linux s390x
  12. windows amd64
  13. windows arm64