securitydiscovery/laravel-fly-machines

该包已被放弃,不再维护。未建议替代包。

为Laravel提供Fly.io机器API客户端。

v1.0.1 2023-03-08 12:07 UTC

README

这是一个非常简单且轻量级的Fly.io机器API客户端。

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

安装

您可以通过composer安装此包

composer require securitydiscovery/laravel-fly-machines

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="fly-machines-config"

这是发布配置文件的内容

// config for SecurityDiscovery/LaravelFlyMachines
return [
    'proto' => env('FLY_API_PROTO', 'http'),
    // The endpoint to the Fly machines API.
    'endpoint' => env('FLY_API_HOSTNAME', '127.0.0.1:4280'),
    // The token to authenticate to the API.
    'token' => env('FLY_API_TOKEN'),
];

使用方法

use SecurityDiscovery\LaravelFlyMachines\Facades\LaravelFlyMachines as FlyMachines;

列出Fly.io应用的机器

FlyMachines::machines('my-fly-app')->list()

启动机器

FlyMachines::machines('my-fly-app')->launch(machine: $config)

更新机器

FlyMachines::machines('my-fly-app')->update(machineId: "machineId", machine: $config, nonce: "nonce")

获取机器

FlyMachines::machines('my-fly-app')->get(machineId: "machineId")

停止机器

FlyMachines::machines('my-fly-app')->stop(machineId: "machineId")

启动机器

FlyMachines::machines('my-fly-app')->start(machineId: "machineId")

向机器发送信号

FlyMachines::machines('my-fly-app')->signal(machineId: "machineId", signal: 9)

杀死机器(使用信号9(SIGKILL),与上述调用相同)。

FlyMachines::machines('my-fly-app')->kill(machineId: "machineId")

重启机器。

FlyMachines::machines('my-fly-app')->restart(machineId: "machineId", forceStop: true, timeout: 10, signal: 9)

寻找机器的租约。

FlyMachines::machines('my-fly-app')->findLease(machineId: "machineId")

获取机器的租约。

FlyMachines::machines('my-fly-app')->acquireLease(machineId: "machineId", ttl: 30)

释放机器的租约。

FlyMachines::machines('my-fly-app')->releaseLease(machineId: "machineId", nonce: "nonce")

等待机器。

FlyMachines::machines('my-fly-app')->releaseLease(machineId: "machineId", instanceId: "instanceId", state: "started", timeout: 30)

销毁机器。

FlyMachines::machines('my-fly-app')->destroy(machineId: "machineId", kill: true)

启动Fly.io机器

use SecurityDiscovery\LaravelFlyMachines\Facades\LaravelFlyMachines as FlyMachines;
use SecurityDiscovery\LaravelFlyMachines\Helpers\Machine;

$machineConfig = Machine();
$machine = FlyMachines::machines('my-fly-app')
    ->launch(
        Machine::builder()
            ->image(image: 'registry-1.docker.io/flyio/postgres:14.4')
            ->toArray()
    );

不使用辅助工具启动Fly.io机器

use SecurityDiscovery\LaravelFlyMachines\Facades\LaravelFlyMachines as FlyMachines;

$machine = FlyMachines::machines('my-fly-app')->launch([
    'config' => [
        'image' => 'registry-1.docker.io/flyio/postgres:14.4',
    ],
    'region' => 'fra',
]);

Fly Machine Helper

use SecurityDiscovery\LaravelFlyMachines\Facades\LaravelFlyMachines as FlyMachines;
use SecurityDiscovery\LaravelFlyMachines\Helpers\Machine;

$machineConfig = Machine::builder()
    ->image(image: 'my.registry.io/a/b:14.4')  // Required
    ->init(                                    // Optional
        entrypoint: ['/bin/sh'],
        exec: ['exec'],
        cmd: ['cmd'],
        tty: false
    )
    ->retries(                                 // Optional
        max_retries: 3, 
        policy: 'on-failure'
    )
    ->mount(                                   // Optional
        volume_id: 'vol_123',
        path: '/data'
    )
    
    ->env(name: 'NAME_1', value: 'VALUE_1')    // Optional
    ->env(name: 'NAME_2', value: 'VALUE_2')    // Optional
    
    ->auto_destroy(auto_destroy: True)         // Optional
    ->name(name: 'my_machine')                 // Optional
    ->schedule(schedule: 'daily')              // Optional
    ->region(region: 'fra')                    // Optional
    ->size(size: 'shared-cpu-1x' )             // Optional | WARNING: Use 'guest' or 'size'
    ->guest(                                   // Optional
        cpus: 1,
        memory_mb: 2*256,
        cpu_kind: 'shared',
        kernel_args: []
    )
    ->process()                                // TODO: Document this
    ->toArray();

更多信息请见 https://fly.io/docs/machines/working-with-machines/.

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

请参阅CONTRIBUTING以获取详细信息。

安全漏洞

请查阅我们的安全策略如何报告安全漏洞

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。

"Laravel"是Taylor Otwell的注册商标。本项目与Taylor Otwell无任何关联、合作、认可或赞助关系,也未经过Taylor Otwell的审查、测试或认证。使用“Laravel”商标仅用于信息性和描述性目的。Laravel Workflow并非官方与Laravel商标或Taylor Otwell相关。