tl;dr
通信元のdocker-compose.ymlに通信先ネットワークの情報を書けばよい
- 通信元
version: '3' services: src_app: # ... networks: - target_network networks: target_network: external: name: actual_network_name
- 通信先
version: '3' services: dst_app: # ... ports: - 8080:3000 networks: - my_app networks: my_app: external: name: actual_network_name
この状態で通信元のコンテナ(src_app)内からは target_network
という名前で通信先に接続できる
curl http://target_network:8080/
みたいな感じ
背景とか
docker-composeで複数コンテナを束ねたアプリケーションがあり、そのアプリケーションを利用したい別のアプリケーションもまた同じホスト上にdocker-composeで構築されている状況。
Docker上のネットワークを作り、それが外部にあるものとして参照すればよいみたいで、docker-compose.ymlでネットワーク名書いておけばよかった。
StackOverflowに書いてたけどどっちからどっちにつなごうとしてるのかわかりにくかったのでまとめた