やりたいこと
Docker でローカル開発環境を作りたい時があります。
アプリには、APIサーバーとWebサーバーがあり、 docker-compose up -d
で立ち上げたいです。
docker-compose up -d
すると、
- 192.168.33.10 -- Web サーバーが立ち上がる
- 192.168.33.20 -- API サーバーが立ち上がる
そして、 http://192.168.33.10 で Web にアクセス、 http://192.168.33.20 で API にアクセスできるようにしたい。
結論
できなかった。
Docker 公式ドキュメントを見ると
https://docs.docker.jp/docker-for-mac/networking.html
コンテナに ping できません
Docker Desktop for Mac は Linux コンテナに対してトラフィックを経路付け(ルーティング)できません。
ホストのMac から Docker にルーティングすることはできず、
コンテナごとに IP アドレスを割り当てられません
docker (Linux) ブリッジ・ネットワークは macOS ホストから到達できません。
ここにも同じことが書いてある。
代替手段
結局 port の設定で、Docker のポートと、ホストのMacのポートを紐付けて、localhost なり、 127.0.0.1 でアクセスするしかないようです。
この場合、当然ホストの Mac 側は同じポートを使えないので、Web で 80 を使っていたら、 API は 8080 のようにするしかなさそうです。。。
Docker コンテナ同士は普通に接続できるので、例えば、localhost:80 で Web にアクセスし、 Web のバックエンド側で、 api:80 に接続する、のようなことはできます。(このやり方の場合バックエンドから接続しないと接続できないので注意)