源码安装 Baetyl

相比于快速安装 Baetyl,你可以采用源码编译的方式来使用 Baetyl 最新的功能。

准备工作

  • 安装 Golang 工具并启用 Modules 管理Golang 的最低版本要求为 1.12。 下载安装 Golang 可参考 golang.org 或者 golang.google.cn。我们现在采用 Go Modules 来管理依赖包,可以参考 goproxy.io 来启用。

  • 安装 Docker Engine 并打开 Buildx 功能Docker 的最低版本要求为 19.03,因为从该版本开始内置了 Buildx 功能,可用于制作多平台的镜像。 安装 Docker 可参考 docker.com/install,打开 Buildx 功能参考 github.com/docker/buildx

下载代码

Baetyl Github 下载代码,执行如下命令:

  1. go get github.com/baetyl/baetyl

编译 Baetyl 和模块

进入 Baetyl 项目目录,执行 make 即可编译出当前系统平台的 Baetyl 主程序和模块程序。

  1. cd $GOPATH/src/github.com/baetyl/baetyl
  2. # 当前平台,所有模块
  3. make # make all

上述命令执行完后,Baetyl 主程序和模块程序会生成在项目的 output 目录下,会按照平台分开放置。

如果需要指定平台和模块,参考如下命令:

  1. # 所有平台,所有模块
  2. make PLATFORMS=all
  3. # 指定的平台,指定的模块
  4. make PLATFORMS="linux/amd64 linux/arm64" MODULES="agent hub"

如下命令可以重新编译 Baetyl 主程序和模块程序。

  1. # 当前平台,所有模块
  2. make rebuild
  3. # 所有平台,所有模块
  4. make rebuild PLATFORMS=all
  5. # 指定的平台,指定的模块
  6. make rebuild PLATFORMS="linux/amd64 linux/arm64" MODULES="agent hub"

注意: 上述编译命令会自动读取 Git 的 revision 和 tag 作为程序的版本,所以在执行命令前请先提交或者移除本地的修改。

制作模块镜像

如果使用容器模式运行 Baetyl,我们推荐使用正式发布的官方镜像。如果你想自己制作镜像,可以使用下面提供的命令,但是前提是打开了最前面的准备工作中提到的 Buildx 功能。

进入 Baetyl 项目目录,执行 make image 即可生成当前系统平台的模块镜像。

  1. cd $GOPATH/src/github.com/baetyl/baetyl
  2. # 当前平台,所有模块
  3. make image
  4. # 当前平台,指定的模块
  5. make image MODULES="agent hub"

执行结束后,你可以执行 docker images 来查看生成的镜像。

  1. docker images
  2.  
  3. REPOSITORY TAG IMAGE ID CREATED SIZE
  4. baetyl-function-python3 git-e8fe527 12b669a36a9c 54 minutes ago 202MB
  5. baetyl-function-python2 git-e8fe527 278e5c465e17 About an hour ago 162MB
  6. baetyl-hub git-e8fe527 abd5bef8ba92 2 hours ago 16.9MB
  7. baetyl-agent git-e8fe527 7ac8dfecdb63 2 hours ago 18MB
  8. baetyl-function-manager git-e8fe527 e6564cd87768 2 hours ago 16.7MB
  9. baetyl-remote-mqtt git-e8fe527 0daa114b968d 2 hours ago 16MB
  10. baetyl-timer git-e8fe527 88a408e4512a 2 hours ago 16MB
  11. baetyl-function-node8 git-e8fe527 d7bf1abb6d24 4 days ago 221MB

如果你需要制作多平台的镜像,你必须指定镜像发布的仓库地址和 push 参数,因为目前 Buildx 不支持将镜像的 manifest 加载到本地的镜像空间。

  1. # 所有平台,所有模块
  2. make image PLATFORMS=all XFLAGS=--push REGISTRY=<your docker image register>/
  3. # 指定的平台,指定的模块
  4. make image PLATFORMS="linux/amd64 linux/arm64" MODULES="agent hub" XFLAGS=--push REGISTRY=<your docker image register>/

安装 Baetyl 和示例

使用如下命令安装 Baetyl 和示例,默认安装到 /usr/local

  1. cd $GOPATH/src/github.com/baetyl/baetyl
  2. sudo make install # 会同时安装 docker 容器模式的示例
  3. sudo make install MODE=native # 会同时安装 native 进程模式的示例

你也可以指定安装的目录,例如项目下的 output

  1. cd $GOPATH/src/github.com/baetyl/baetyl
  2. make install PREFIX=output # 会同时安装 docker 容器模式的示例
  3. make install MODE=native PREFIX=output # 会同时安装 native 进程模式的示例

在 Darwin 平台上,需要设置 Baetyl 使用到的 /usr/local/var 目录,允许挂载到容器内。

../_images/docker-path-mount-on-mac.pngMount path on Mac

运行 Baetyl 和示例

如果 Baetyl 和示例已经安装到默认路径:/usr/local

  1. sudo baetyl start

如果 Baetyl 和示例已经安装到了指定路径,例如项目下的 output

  1. sudo ./output/bin/baetyl start

注意:启动方式根据安装方式的不同而不同,即,若选择 docker 运行模式安装,则上述命令会以 docker 容器模式运行 Baetyl。

提示

  • baetyl 启动后,可通过 ps -ef | grep "baetyl" 查看 baetyl 是否已经成功运行,并确定启动时所使用的参数。通过查看日志确定更多信息,日志文件默认存放在工作目录下的 var/log/baetyl 目录中。
  • docker 容器模式运行,可通过 docker ps 或者 docker stats 命令查看容器运行状态。
  • 如需使用自己的镜像,需要修改应用配置中的模块和函数的 image,指定自己的镜像。
  • 如需自定义配置,请按照 配置解读 中的内容进行相关设置。

卸载

如果 Baetyl 安装在默认目录 /usr/local

  1. sudo make uninstall

如果 Baetyl 安装在指定目录下,例如项目下的 output

  1. make uninstall PREFIX=output