sidis405/laravel-dynamic-servers-digital-ocean

Digital Ocean提供商为Spatie的Laravel Dynamic Servers包


README

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

此包为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)。有关更多信息,请参阅许可证文件