两个 compose 项目,想互相访问,试了 IP 能通,容器名不通。
原因:不同 compose 项目默认在不同的网络里,服务名解析不了。
解法:
- 建一个外部网络 docker network create shared
- 两个 compose 都声明 external: true 并加入
- 用服务名互相访问
注意:加入外部网络后,服务名要用 container_name 或者 compose 里的服务名,不是项目名。
另一个坑:nginx 启动时如果后端容器还没起来,DNS 解析失败会缓存失败结果,后续一直 502。要用变量 + resolver 让 nginx 每次重新解析。
主楼- 暂无回复
继续逛逛