跳到主要内容

Docker Compose 网络别名,能把本地联调变得更像线上

· 阅读需 2 分钟
一介布衣
全栈开发者

容器化本地开发有一个很常见的问题:服务虽然都起来了,但互相调用时用的地址特别随意。今天写死一个容器名,明天改成宿主机端口,后天又因为换了 compose 文件把连接地址全部推倒重来。结果是,本地联调环境虽然能跑,却总和线上长得不太一样。

我后来越来越喜欢用 Compose 里的网络别名,把服务发现这件事先收一收。

它解决的不是“能不能连”,而是“名字稳不稳”

很多人一开始会觉得,容器名本来就能互相访问,为什么还要多此一举加 alias?
我的经验是,容器名更像部署实现细节,而业务连接点最好有一个更稳定、可替换的名字。

比如:

  • api
  • auth
  • content-db
  • cache

这些名字一旦稳定下来,本地、测试和后续更复杂的环境配置都会轻松很多。

本地环境为什么也值得做这一步

因为本地最容易养成坏习惯。
如果开发阶段到处都在写 localhost:xxxx 或者某个临时容器名,等以后要搬到 CI、预发、正式环境时,就会发现很多连接假设其实都是临时的。

网络别名的价值,在于让“服务之间如何彼此称呼”这件事提前规范下来。

它还能减少哪些联调噪音

我自己感受到最明显的收益有两个:

  • 环境切换时,配置改动更少
  • 排查服务互访问题时,命名更统一,不用反复翻 compose 文件猜谁是谁

这看起来像小收益,但本地联调最怕的就是这些重复噪音。

小结

Docker Compose 的很多功能,真正有价值的地方不在于炫,而在于把本来模糊的约定提前固化。
网络别名就是这样一个小功能。它不会让系统突然变快,却能让本地环境更像未来真实运行的样子,这对长期维护非常值。