sidis405 / laravel-dynamic-servers-digital-ocean
Digital Ocean提供商为Spatie的Laravel Dynamic Servers包
v0.1.2
2022-09-13 11:04 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^9.0
- spatie/laravel-dynamic-servers: ^0.0.5
- spatie/laravel-package-tools: ^1.13.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^6.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^7.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2024-09-09 04:32:17 UTC
README
此包为Spatie的服务器提供商Laravel Dynamic Servers包。
此包处于积极开发中,不适合生产环境。请随时贡献。
安装
您可以通过composer安装此包
composer require sidis405/laravel-dynamic-servers-digital-ocean
之后,请确保发布此包附带的事件服务提供者
php artisan dynamic-servers-digital-ocean:install
用法
在config/dynamic-servers.php中注册DO提供者
return [ 'providers' => [ ... 'digital_ocean' => [ 'class' => Sidis405\LaravelDynamicServersDigitalOcean\DigitalOcean\DigitalOceanServerProvider::class, 'maximum_servers_in_account' => 20, 'options' => [ 'token' => env('DIGITAL_OCEAN_TOKEN'), 'region' => env('DIGITAL_OCEAN_REGION'), 'size' => env('DIGITAL_OCEAN_SIZE'), 'image' => env('DIGITAL_OCEAN_IMAGE'), 'vpc_uuid' => env('DIGITAL_OCEAN_VPC_UUID'), ], ], ] ];
在app/Providers/DynamicServersProvider.php中,使用Digital Ocean提供者注册一个新的服务器类型
public function register() { .... $doServer = ServerType::new('do') ->provider('digital_ocean') ->configuration(function(Server $server) { return [ 'name' => Str::slug($server->name), "image" => $server->option('image'), "vpc_uuid" => $server->option('vpc_uuid'), "region" => $server->option('region'), "size" => $server->option('size'), "ipv6" => false, "backups" => false, "monitoring" => true, ]; }); DynamicServers::registerServerType($doServer); }
事件
在基础包的CreateServerJob
执行后,将调度一个新的作业VerifyServerStartedJob
,并将每20秒检查一次以确保提供者最终将Droplet标记为正在运行。
确保它运行后,不再尝试再次获取服务器元数据。
考虑到DigitalOcean仅在Droplet完全创建后才会返回Droplet的IP地址,我们需要再次获取Droplet的元数据。
为此,我们将使用基础包的“ServerRunningEvent”事件。
此包将在您的项目中发布一个App\Providers\DigitalOceanEventServiceProvider
。
默认情况下,有一个单一生成器配置,它将在基础包确保其运行后再次获取Droplet的元数据。
protected $listen = [ ServerRunningEvent::class => [ UpdateServerMeta::class, ], ];
您可以自定义生成器,禁用它或用您自己的替换它。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅变更日志。
贡献
有关详细信息,请参阅贡献指南。
安全漏洞
有关如何报告安全漏洞,请参阅我们的安全策略。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。