php artisan dusk:install でインストールされる chromedriver を alpine で実行するとエラーになってしまいました。

Failed to connect to localhost port 9515: Connection refused

unknown error: cannot find Chrome binary

等のエラーです。

試行錯誤の末、次の手順が最小限な解決方法でした。

Dockerfile で次のパッケージをインストール。 ttf-freefont は無くても動きますが、日本語が文字化けします。

RUN apk add chromium chromium-chromedriver ttf-freefont

使用する chromedriver を差し替えて docker exec で実行。

% docker exec laravel ln -sf /usr/bin/chromedriver /path/to/vendor/laravel/dusk/bin/chromedriver-linux && php artisan dusk
PHPUnit 8.5.2 by Sebastian Bergmann and contributors.

.                                                                   1 / 1 (100%)

Time: 3.86 seconds, Memory: 16.00 MB

OK (1 test, 1 assertion)

ただし、コンテナ内で実行すると別のエラーがでます。

# ln -sf /usr/bin/chromedriver /path/to/vendor/laravel/dusk/bin/chromedriver-linux && php artisan dusk
Facebook\WebDriver\Exception\UnknownServerException: unknown error: Chrome failed to start: exited abnormally

この場合は DuskTestCase--no-sandbox を追加してあげれば解決します。

$options = (new ChromeOptions)->addArguments([
    '--disable-gpu',
    '--headless',
    '--window-size=1920,1080',
    '--no-sandbox', // 追加
]);

尚 Dockerfile での

RUN sed -i 's@Exec=chromium-browser %U@Exec=chromium-browser %U --no-sandbox@g' /usr/share/applications/chromium.desktop

だと解決できませんでした。