dockerコンテナからhostにリクエストできるようにする
dokcer-composeでアプリを立ち上げていましたが、外部サービスにアクセスする処理にスタブサーバーを使いたかったので対応しました。docker-composeに組み込んでもいいのですが、それをやるほどではなかったので組み込まなかったです。
- docker host内でプライベートIPアドレスを取得
ifconfigなどを使用してプライベートIPアドレスを取得しておく
- docker_compose.ymlに追記
ホストにリクエストしたいコンテナの設定に下記の設定を追記する。
extra_hosts: - "stub_server:取得したプライベートIPアドレス"
- 実行確認
コンテナ内でcurl stub_server:8000/getのようにして実行確認を行う。
extra_hostsはコンテナの /etc/hosts ファイルにホストを追加する設定です。ホストからコンテナのリクエストの設定なのでportの設定を「8080:8000」のようにしただけだと通信できませんでした。またhost.docker.internalというDNS名も用意されていますが、これはDocker Desktop For Mac/Windowsの設定なのでWSLで起動しているdockerには効きませんでした。
https://docs.docker.jp/compose/compose-file.html#extra-hosts