我以前写过一个脚本,依赖于Compose中容器的名称。过了一会儿,有人问我为什么不能运行,并报告没有这样的容器错误。我用自己的环境又试了一遍,完全没问题,问题出在环境上。比较输出,我们发现docker-compose在两个环境中生成了不同的容器名称。在他的环境中,容器名称前面的水平线(即连字符,-)丢失了!因为docker-compose的默认命名约定是__[_],也就是说,他的docker-compose会吃第一个项目名中的连字符。
检查docker-compose的源代码。我的环境是:
而他的环境是,估计是安装了APT的:
如您所见,新版本在生成项目名称时选择保留连字符,而旧版本没有。那么这个变化的时间是2018年,是2017年的套餐,所以就出现了这个问题。
看看github上有人在讨论这个问题:而且,给出的理由实际上是因为把连字符和下划线混在一起很难看...
解决办法是升级到新版本。