#instance #serverless #persistent #command-line #port #firecracker #command-line-tool

app spsd

状态持久化、无服务器开发盒子

5 个版本

0.1.4 2024年1月21日
0.1.3 2024年1月15日
0.1.2 2024年1月12日
0.1.1 2024年1月12日
0.1.0 2024年1月12日

#773网络编程

Download history 1/week @ 2024-03-19 33/week @ 2024-03-26 10/week @ 2024-04-02

每月下载 55

MIT 许可证

115KB
946

spsd

spsd 是一个用于管理状态持久化、无服务器开发盒子的命令行工具。使用 spsd,您可以在几秒钟内启动具有 16 个 vCPU、32gb 内存和 500gb 持久磁盘的实例,并将端口公开到互联网。

实例是托管在 fly.io 上的机器(Firecracker 虚拟机),从 Docker 镜像启动。您可以使用自己的或使用 spsd 中包含的 基本镜像

安装

您可以通过在终端中运行以下命令通过 homebrew 安装 spsd:brew tap tfsingh/spsd && brew install spsd。您还可以使用 cargo install spsd 从源代码安装(在这种情况下必须安装 flyctl)。

快速入门

  1. 导航到 fly.io,创建一个账户(您还需要配置计费,尽管小型实例应该是免费的),并 生成 一个访问令牌。

  2. 使用 spsd profile <API_KEY> <ALLOCATE_IP> 配置您的配置文件,其中 API_KEY 是您上面生成的 API 密钥,ALLOCATE_IP(将您的实例公开到互联网)是 y/n。

  3. 运行 spsd new 并填写相关字段来创建一个实例。

  4. 使用 spsd sl <NAME> 在无服务器中运行您刚刚创建的实例。请注意,您希望持久化的任何数据都应保留在 /data 路径上。

命令

destroy

销毁一个实例

  • name — 实例名称

list

列出实例及其相关数据(名称、映像、CPU、内存、区域、端口、状态)

  • ip — 列出附加的 IPv4 地址(可选)

new

创建一个新的实例

  • name — 实例名称
  • image映像的 URL
  • cpus — vCPU 数量(1、2、4、8、12、16)
  • memory — 内存大小(256 - 32768 MB)
  • volume — 卷大小(1-500 GB)
  • region — 实例所在的 区域
  • port — 要暴露的端口(可选,1024-65536)

请注意,Fly 对 CPU/内存比例有限制,这可能会使您的配置无效。

配置文件

设置 fly.io 配置文件

  • api_key — Fly API 密钥(覆盖现有密钥)
  • allocate_ip — 分配一个专用的 IPv4 地址(每月 2 美元)

sl

无服务器运行实例服务器(在优雅断开连接时停止实例)

  • name — 实例名称

start

启动并连接到实例

  • name — 实例名称

stop

停止实例

  • name — 实例名称

常见问题解答

我如何配置实例以响应 HTTP 请求?

首先,如果您还没有,请为您的应用程序分配一个 IP 地址(见下文)。确保您的实例已暴露一个端口(例如,我们假设我们已将实例配置为监听端口 8080),并运行 spsd list ip 以查看您的专用 IPv4 地址(例如,123.1.23.12)。确保您的服务器在实例配置中 本地 监听您上面暴露的任何端口(localhost:8080),并且它将在您的分配 IP 上以相同的端口公开(http://123.1.23.12:8080)。

如果最初没有分配 IP,我该如何操作?

假设您的 API 密钥有效,请在您的终端中运行 flyctl ip allocate--<APP_NAME>(应用程序名称可在 fly.io 仪表板 上找到)。

我如何使用自己的 Docker 镜像?

使用 docker push 发布您的镜像,确保您的存储库是公开的,并将 "registry-1.docker.io/YOUR-DOCKER-USERNAME/IMAGE-NAME:TAG" 作为您的镜像 URL。

附录

区域

城市
ams 阿姆斯特丹
bom 孟买
cdg 巴黎
dfw 达拉斯
fra 法兰克福
hkg 香港
iad 华盛顿 DC
lax 洛杉矶
lhr 伦敦
nrt 东京
ord 芝加哥
scl 圣地亚哥
sea 西雅图
sin 新加坡
sjc 圣何塞
syd 悉尼
yyz 多伦多

镜像

以下可以作为镜像输入,而不是提供具体的 URL

  • base (ubuntu)
  • python
  • rust
  • go
  • node

致谢

感谢 Erik Bernhardsson 对 spsd 的 启发,感谢 nebula 使用 代码 解析 Fly API 的响应,以及 fly.io 团队构建了他们所拥有的东西。

依赖关系

~9–21MB
~308K SLoC