kirschbaum-development / laravel-preflight-checks
部署或开发前的预检清单
Requires
- php: ^8.0
- illuminate/pipeline: ^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- doctrine/dbal: ^2.0|^3.0|^4.0
- fakerphp/faker: ^1.9.1
- mockery/mockery: ^1.3.1
- orchestra/testbench: 4.*|5.*|6.*|7.*|8.*|9.*
- phpunit/phpunit: ^9.0|^10.0
README
执行预检以确保部署或开发的配置和设置。
此包特别适用于配置单独管理的自动化部署(例如通过Docker、K8s等容器化部署)。它还可以用作设置本地和/或开发环境的通过/不通过检查。
安装
您可以通过composer安装此包
composer require kirschbaum-development/laravel-preflight-checks
设置
在要求composer包后,发布配置文件
php artisan vendor:publish --provider="Kirschbaum\PreflightChecks\PreflightChecksServiceProvider"
使用您应用程序所需的配置配置config/preflight_checks.php
文件。根据典型环境提供了一些默认值(已注释)。
配置文件的结构如下:'checks'
> 环境名称
> 检查数组
return [ 'checks' => [ 'production' => [ // Database::class, // Redis::class, // Configuration::class => [ // // Essential production keys here // ], ], 'anyEnvironmentName' => [ // Any class(es) extending Kirschbaum\PreflightChecks\Checks\PreflightCheck::class ], // ... ], ];
每个检查都可以指定选项,例如
'production' => [ Database::class => [ 'connection' => 'db2' ], ]
或者使用完全显式的语法
'production' => [ [ 'check' => Database::class, 'options' => [ 'connection' => 'db2' ] ], ]
如果您需要重复检查(例如,使用多个数据库连接),则需要使用完整的语法。
可用检查
数据库
Kirschbaum\PreflightChecks\Checks\Database
检查是否可以通过PDO建立数据库连接,以及是否设置了所需的配置键。它输出一些服务器信息和版本信息。
Redis
Kirschbaum\PreflightChecks\Checks\Redis
检查是否可以建立Redis连接,以及是否设置了所需的配置键。
配置
Kirschbaum\PreflightChecks\Checks\Configuration
检查指定的配置键是否已设置。此检查配置的值,而不是env
的值,以确保在更高环境中正确检测。因此,请确保指定与config(...)
相同的键。
Configuration
预检检查接受的选项是要检查的配置键列表。例如
'production' => [ Configuration::class => [ 'services.payment.key', 'services.mail.key', // ... ] ]
您还可以传递一个提示(仅推荐用于本地开发),如果未设置键,则将显示该提示。例如
'local' => [ Configuration::class => [ 'services.payment.key' => 'In dashboard as "Super Secret API Token Key Thing"', 'services.mail.key', // ... ] ]
当新的开发人员设置他们的环境并且缺少该配置值时,他们将获得一个友好的消息,帮助他们找到该键。
您还可以使用OptionalConfiguration
类指定可选的配置值并提供提示,该类以相同的方式运行,但不会使命令失败。
编写您自己的检查!
如果您有特殊的启动考虑事项,可以自由地编写自己的检查,扩展Kirschbaum\PreflightChecks\Checks\PreflightCheck
。
在$requiredConfig
属性上指定任何必要的配置键。
实现check
方法,该方法应执行您的检查并标记$result
为通过/失败。
示例
/** * Performs the preflight check. * * This method should set a pass/fail on the result. */ public function check(Result $result): Result { try { // Check something is up/ready/willing/etc } catch (Exception $e) { return $result->fail($e->getMessage(), $e); } return $result->pass('Woohoo! It didn\'t fail!', $dataFromTheCheck); }
用法
基本用法是通过Artisan命令
php artisan preflight:check
如果您想看到成功的检查信息(而不仅仅是失败),请添加详细标志-v
。
您可以通过指定Artisan环境(--env
)来测试其他环境。
对于更高和/或自动化的环境(如CI/CD),您可能想使用--show-only-failures
标志以减少噪音。
Kubernetes
在Kubernetes部署中,这可以在启动探测(1.20+)中使用
startupProbe: exec: command: - php - artisan - preflight:check - --show-only-failures failureThreshold: 30 periodSeconds: 10
您也可以为就绪探针设置此操作,但请注意,探针在整个容器生命周期中都会运行(我们正在建立与Redis或数据库的连接,这些连接不可忽视)。
容器化环境
在容器化环境中(包括K8s),您可能想使用此命令“阻塞”容器启动(例如php-fpm
),以确保正确加载了环境并且缓存得当。对于标准的php-fpm
Docker容器,您可以使用以下启动脚本:
#!/bin/bash set -e php artisan optimize php artisan preflight:check -v php-fpm
本地环境
preflight:check
命令还可以提供确保所有适当的环境配置已经实施的具体方法。这在新加入的开发者中尤其有用,因为他们只需运行php artisan preflight:check
就可以很好地了解在他们的环境上线之前还需要设置/配置什么。
贡献
有关详细信息,请参阅CONTRIBUTING。
安全性
如果您发现任何安全相关的问题,请通过电子邮件security@kirschbaumdevelopment.com或nathan@kirschbaumdevelopment.com发送,而不是使用问题跟踪器。
致谢
赞助
此包的开发由专注于问题解决、团队建设和社区的Kirschbaum Development Group赞助。了解更多关于我们或加入我们!
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。