FrankenPHP (Caddy) による自動 HTTPS / HTTP2 の設定手順です。
php artisan octane:frankenphp に以下のフラグを追加:
--https: HTTPS (HTTP/2) を有効化。Caddy がローカル CA 証明書を自動生成する--watch: PHP ファイルの変更を検知してワーカーを自動リロード
CHOKIDAR_USEPOLLING: "1": macOS + Docker でファイル変更を確実に検知するためのポーリング設定caddy_data:/dataボリューム: 生成された TLS 証明書を永続化し、コンテナ再起動後も再登録が不要になる
chokidarを devDependencies に追加(--watchが内部で使用)
docker compose build --no-cache
docker compose up -d# CA 証明書をコンテナからホストにコピー
docker cp book-frankenphp-app:/data/caddy/pki/authorities/local/root.crt ~/caddy-local-root.crt
# macOS Keychain に信頼済みルート CA として登録
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/caddy-local-root.crtChrome・Safari はこれで証明書警告が出なくなります。
https://localhost:8000
caddy_dataボリュームが存在する限り同じ証明書が使われ続けるため、Keychain への再登録は不要- ボリュームを削除した場合は証明書が再生成されるため、手順 2 からやり直す
- Firefox は独自の証明書ストアを使うため、別途
about:configで設定が必要
about:config を開き security.enterprise_roots.enabled を true にすると macOS Keychain の証明書を参照するようになる。
docker compose down
docker volume rm book-frankenphp-caddy-data
docker compose up -d
# その後、手順 2 の証明書登録を再実行