Remote Container 間で通信する

Remote Containerで実行している環境間で通信をする場合についてのメモ。

状況としては開発中のプロジェクトAとプロジェクトBがあって、それぞれ同じマシン上でRemote Containersを使って開発をしている状況。

プロジェクトAREST APIを提供するプロジェクトでコンテナ内でローカル開発サーバが起動していて、仮にhttp://localhost:3000/で待ち受けてるとしよう。

その状態でプロジェクトBからこのAPIをコールしたい。

まず、普通にlocalhostでアクセスするのはもちろんダメ。

ではコンテナに割り振られてるIPでのアクセスはどうかを試してみる。コンテナに割り振られてるIPアドレスdocker inspectで確認できる。

docker psで確認したいコンテナのIDを確認してdocker inspect <コンテナID>を実行して出力結果のIPAddressを確認すればいい。

さて、IPアドレスを確認すると

プロジェクトA: 172.17.0.1
プロジェクトB: 172.17.0.2

という感じだったのでhttp://127.17.0.1:3000/でアクセスしてみたがこれもConnection Refusedになる。

その後、あれやこれやとポートのフォワーディング周りで関係しそうな設定を探したり試したりしたところ、結果的には以下の設定を有効にすることでプロジェクトBのコンテナ内からプロジェクトAに対してアクセスができるようになった。

"remote.localPortHost": "allInterfaces",

デフォルトではここがlocalhostになっているんだがその場合全てのポートはlocalhostあてに転送するようにVSCodeが振る舞うみたい。

というわけで解決。

©Keisuke Nishitani, 2020   プライバシーポリシー