Laravelでhttp経由でDB+Webサーバーのヘルスチェックサンプル

Laravelでhttp経由でDB+Webサーバーのヘルスチェックサンプルです

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;

class HealthCheckResultsController extends Controller
{
    public function __invoke()
    {
        $status = 500;

        try {
            DB::connection(config('database.default'))->getPdo();

            $status = 200;
        } catch (\Exception $exception) {
        }

        return response()
            ->json([], $status);
    }
}

api.phpなどで

Route::get('/health', 'HealthCheckResultsController');

Laravel 8+, PHP 8+であれば以下を使いたかった

github.com

Laravel 7+, PHP 7.4+でやろうとした残骸

github.com

tsmsogn/laravel-healthを利用する *1

composer.jsonに以下を追加

{
    "repositories": {
        "spatie/laravel-health": {
           "type": "vcs",
           "url": "https://github.com/tsmsogn/laravel-health"
        }
    }
}

composerでインストール

composer require spatie/laravel-health:dev-main

*1:いろいろな制限付き