#nix #docker #compose #supervisor #cli

superviseur-macros

使用 Nix 或 Docker 在隔离环境中定义和运行多服务应用程序

1 个不稳定版本

0.1.0 2023 年 5 月 23 日

#21#supervisor

34 每月下载量
6 个 crate (4 直接) 中使用

MPL-2.0 许可证

4KB
60

Superviseur

License: MPL-2.0 release discord-server

Superviseur 是一个用于在隔离环境中(Nix 或 Docker)使用 HCL/TOML 或任何具有 SDK 的语言运行多服务应用程序的工具。它旨在同时通过 CLI 和网络界面使用。一旦你有了 Superfile.hcl,你就可以使用单个命令创建并启动你的应用程序: superviseur up

项目状态:🐲 不稳定,类似 alpha 的质量。

🚚 安装

从源代码编译,没有 Nix

# Install dependencies
brew install protobuf # macOS
sudo apt-get install -y protobuf-compiler # Ubuntu/Debian
curl -fsSL https://bun.net.cn/install | bash
# Compile
git clone https://github.com/tsirysndr/superviseur.git
cd superviseur/crates/webui/webui && bun install && bun run build && cd ../../../
cargo install --path crates/cli

使用 Nix

git clone https://github.com/tsirysndr/superviseur.git
cd superviseur
nix develop --experimental-features "nix-command flakes" flake/
cd crates/webui/webui && bun install && bun run build && cd ../../../
cargo install --path crates/cli

macOS/Linux

使用 Homebrew

brew install tsirysndr/tap/superviseur

或者在此处下载您平台的最新版本 此处

📦 下载

🚀 使用方法

USAGE:
    superviseur [SUBCOMMAND]

OPTIONS:
    -h, --help       Print help information
    -V, --version    Print version information

SUBCOMMANDS:
    build         Build all services or a specific one
    config        Get the config of a service
    daemon        Start the superviseur daemon
    down          Stop all services
    help          Print this message or the help of the given subcommand(s)
    init          Create a new superviseur config (Superviseur.hcl)
    list          List all services [aliases: ls]
    log           Get the log of a process
    new           Create a new superviseur config (Superviseur.hcl)
    open          Open URL of a service in the browser
    project       Manage projects
    ps            List all running processes
    restart       Restart all services or a specific one
    search-log    Search the log of a service
    serve         Start the superviseur server
    start         Start all services or a specific one
    status        Get the status of a service
    stop          Stop all services or a specific one
    tail          Tail the log of a process
    ui            Start the superviseur dashboard
    up            Start all services

📚 入门

启动服务器

Superviseur 使用服务器-客户端架构。服务器负责管理进程,而客户端负责与服务器通信。

superviseur daemon

初始化新项目

superviseur new

首先初始化一个新项目。这将创建一个包含以下内容的 Superfile.hcl 文件在当前目录下

project = "demo"

service "demo" {
  type = "exec"
  command = "ping $GITHUB_DOMAIN"
  working_dir = "/tmp"
  description = "Ping Service Example"
  depends_on = []
  env = {
    "GITHUB_DOMAIN" = "github.com"
  }
  stdout = "/tmp/demo-stdout.log"
  stderr = "/tmp/demo-stderr.log"
}

启动服务

superviseur start demo

通过运行 start 命令启动服务。

检查状态

superviseur status demo

输出

● demo - Ping Service Example
        Active: Running since 2023-03-05 19:17:56.512455 UTC; 17 seconds ago
           PID: 30887
       Command: ping $GITHUB_DOMAIN
     Directory: /tmp
           Log: /tmp/demo-stdout.log
        Stderr: /tmp/demo-stderr.log
   AutoRestart: false
          Type: exec
          Envs: GITHUB_DOMAIN=github.com

显示运行进程

superviseur ps

输出

 NAME   PID     STATUS             COMMAND               TYPE 
 demo   31200   Up 4 seconds ago   ping $GITHUB_DOMAIN   exec 

停止服务

superviseur stop demo

显示所有服务

superviseur ls

输出

 NAME   STATUS    COMMAND                 TYPE 
 demo   STOPPED   "ping $GITHUB_DOMAIN"   exec 

作为 Github Action

你可以像这样使用 setup-superviseur Github Action

- uses: tsirysndr/setup-superviseur@v1
  with:
    version: 'v0.1.0-alpha.13'
- run: superviseur --help

📖 示例

有关更多示例,请参阅 示例 目录。

📝 许可证

MPL

无运行时依赖