ngrokを使ってlocalにあるdockerコンテナ内のdbを外部にportforwardする方法
手順
- まずはlocal環境のdockerコンテナに、自分のPCからアクセスできることを確認する
- 続いて、ngrokを経由して、コンテナ内dbのportforwardを行う
- terminalから、ngrokのportforward先にアクセスする
コマンドなど
まずはlocal環境のdockerコンテナを立ち上げてください。
※どんな形で立ち上げてもOKですので、今回はdocker-compose upを使って複数のコンテナを立ち上げるときに立ち上がるdbコンテナを使用しました。
コンテナが立ち上がったら、以下のコマンドを使用して、ターミナルからアクセスできることを確認してください。
ターミナル
psql -U postgres -h localhost -p 5432 postgres
続いて、ngrokを経由して、コンテナ内dbのportを外部公開します。
以下のコマンドで公開できます。
ターミナル
ngrok tcp 5432
ngrokで公開できたら、あとは以下のコマンドで、アクセスします。
ターミナル
psql -h 0.tcp.ngrok.io -p 17618 -U postgres -d postgres # port番号の17618は、ngrok起動時の記載のものにしてください
もし上のコマンドを入れて以下のようなエラーが出てきた場合は、SSL、TLS関連の処理を無効にしてコマンドを打つ必要があります。
エラー内容
psql: error: connection to server at "0.tcp.ngrok.io" (3.22.30.40), port 11392 failed: SSL error: wrong version number
This may indicate that the server does not support any SSL protocol version between TLSv1.2 and TLSv1.3.
connection to server at "0.tcp.ngrok.io" (3.22.30.40), port 11392 failed: expected authentication request from server, but received S
この場合は、以下のような形でSSL認証を行わないようなオプションをつけてあげればOKです。
ターミナル
psql "host=0.tcp.jp.ngrok.io port=19784 dbname=app_development user=postgres sslmode=disable"