ngrokを使ってlocalにあるdockerコンテナ内のdbを外部にportforwardする方法

ngrokを使ってlocalにあるdockerコンテナ内のdbを外部にportforwardする方法

手順

  1. まずはlocal環境のdockerコンテナに、自分のPCからアクセスできることを確認する
  2. 続いて、ngrokを経由して、コンテナ内dbのportforwardを行う
  3. 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"

Leave a Reply

Your email address will not be published.

CAPTCHA