Open3
docker-composeからngrokのコンテナを起動する

公式以外にはあまり資料がないので、とりあえずメモ程度に
まずはcompose.yml側
メインのappコンテナとnetworkを共有するようにしたうえで、ngrokのサービスの部分みたいに書けばよい
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
volumes:
# Forwards the local Docker socket to the container.
# - /var/run/docker.sock:/var/run/docker-host.sock
# Update this to wherever you want VS Code to mount the folder of your project
- ../:/workspace:cached
command: sleep infinity
ports:
- 11111:11111
env_file:
- .env
networks:
- ngrok-net
ngrok:
image: ngrok/ngrok:latest
depends_on:
- app
restart: unless-stopped
command:
- "start"
- "--all"
- "--config"
- "/etc/ngrok.yml"
volumes:
- ./ngrok.yml:/etc/ngrok.yml
ports:
- 4040:4040
networks:
- ngrok-net
networks:
ngrok-net:
name: ngrok

もう一つ必要なのことは、ngrok.ymlファイルを定義すること
ngrok http 11111 をyml化すると以下のような感じ
version: "2"
authtoken: your_auth_token # ngrokにログインすると確認できる認証情報トークン
console_ui: true # コンソールUIを有効にするかどうか
web_addr: localhost:4040
tunnels:
app:
addr: app:11111 # 公開したいローカルのポート番号
proto: http # 使用するプロトコル (http, https, tcp, tls のいずれか)

これでdocker-composeの起動と同じライフサイクルでngrokも起動するから、ローカルの動作確認でちょっとお手軽に
※AWS SAMの sam local start-apiと併せて使おうとしてみたが、この設定だけではうまくいかなかったので、今のところは普通のdocker-composeの起動では使えるよ、程度のレベル。