A very simple and thin API client for the Fly.io machine API.
You can install the package via composer:
composer require securitydiscovery/laravel-fly-machines
You can publish the config file with:
php artisan vendor:publish --tag="fly-machines-config"
This is the contents of the published config file:
// 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;
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)
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)
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()
);
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',
]);
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();
See more here https://fly.io/docs/machines/working-with-machines/.
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.
"Laravel" is a registered trademark of Taylor Otwell. This project is not affiliated, associated, endorsed, or sponsored by Taylor Otwell, nor has it been reviewed, tested, or certified by Taylor Otwell. The use of the trademark "Laravel" is for informational and descriptive purposes only. Laravel Workflow is not officially related to the Laravel trademark or Taylor Otwell.