はじめに
開発中に、Dockerで立ち上げたアプリケーションをローカルPC以外(スマホ)から確認する必要があったので、個人的メモも含めて記載
※Windows環境での設定となります。
接続準備
前提として、端末同士は同一ネットワークに繋がっている必要あり。
また、環境によっては、アンチウィルスソフトのファイアウォールなどを一時的に無効にする、特定のポートを許可するなどの設定を行う必要があります。
あらかじめ設定を行ったうえで、以下の手順を実行。
1.該当PCのIPを確認
2.DockerアプリケーションのIPを確認
DockerアプリケーションのIPは環境によって様々1ですが、今回はRailsアプリケーションに接続するため、起動コマンドrails s -b 0.0.0.0
より、ポートフォワーディングする先も0.0.0.0
となります。
(この場合、後述する4.ポートフォワーディング設定は不要です)
3.ファイアウォールの許可設定
先述した、アンチウィルスソフトのファイアウォール設定のほかに、Windows Defenderによるポートの許可を行います。
1.Windows Defender ファイアウォール設定画面を開き、新しい規則を作成します。
3.TCPを選択して、特定のローカルポートここでは複数のアプリケーションを許可しているので3つのポートを指定しています。
5.ここでは、規則は全てを許可(状況によって変更してください)
4.ポートフォワーディング設定
DockerのIPが特定のIPアドレスであった場合、スマホ=>PC=>Dockerコンテナへとポートフォワーディングする必要があるため、netshによる以下の設定を行います。
コマンドプロンプト管理者権限で開き、netsh
コマンドを実行。
その後以下のコマンドを実行して、ポートフォワーディングを行います。
interface portproxy add v4tov4 listenport=3000 listenaddress=192.168.11.6 connectport=3000 connectaddress=192.168.99.100
上記は
interface portproxy add v4tov4 listenport={ローカルPCのリッスンポート} listenaddress={ローカルPCのIPアドレス} connectport={Dockerのポート} connectaddress={DockerのIPアドレス}
となります。
複数ある場合は、複数回実行。範囲指定の場合は3000-3100
のように指定します。
設定内容を確認するには以下
interface portproxy show v4tov4
消す場合は以下
interface portproxy reset
5.確認
Dockerコンテナを立ち上げた後、
http://192.168.11.6:3000/
をローカルPC以外で接続するとアプリケーションが見れると思います。
まとめ
スマホ特有の挙動などをSTG環境に上げる手間なく、その場で確認できるのはメリットだと思うので、何かの参考になれば幸いです。
参考
-
docker-machineの場合は192.168.99.100がデフォルト ↩