外部API連携等で、ローカルDocker環境でもSSLが使いたい場合がある。
そんな時はngrokが便利だった。
ngrokはローカルホストを外部に公開できる。
SSLも使える。
ngrokアカウント作成
使用を開始するには、まずngrokのWebサイトでアカウントを作成する。
ログインしたらYour Authtokenのページで自分のAuthtokenをコピーする。

Docker Compose設定
以下、Laravel Sail使用時のdocker-compose.yml
設定例。
※laravel.test
がLaravelアプリケーションのサービス
services:
ngrok:
image: ngrok/ngrok:latest
environment:
NGROK_AUTHTOKEN: '${NGROK_AUTHTOKEN}'
command: 'http laravel.test:80'
ports:
- 4040:4040
networks:
- sail
depends_on:
- laravel.test
今回Authtokenは.env
で設定する。
NGROK_AUTHTOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
使い方
普段通りDocker Compose(Laravel Sail)を起動したら、http://localhost:4040
にアクセスする。
トンネルURLが表示されるので、クリックするとngrok経由でサイトを表示できる。

[追記] セキュリティ対策
ランダムなURLが発行されるので、誰かが間違えてアクセスする可能性はほとんどないと思うが、一応URLを知っていれば外部からアクセスできるので、認証があった方が安心だ。
Basic認証でよければ、コマンドに--basic-auth
オプションを追加すれば簡単に設定できる。
services:
ngrok:
image: ngrok/ngrok:latest
environment:
NGROK_AUTHTOKEN: '${NGROK_AUTHTOKEN}'
command: 'http --basic-auth="${NGROK_USERNAME}:${NGROK_PASSWORD}" laravel.test:80'
ports:
- 4040:4040
networks:
- sail
depends_on:
- laravel.test
.env
でユーザー名とパスワードを設定
NGROK_USERNAME=username
NGROK_PASSWORD=password
コメント