之前写了一个脚本,依赖 compose 起的容器的 name,过了一段时间有人问我为什么跑不起来了,而且报错 no such container,我就用我自己的环境重新试了一次,是完全没问题的,那问题就出在环境上。对比了一下输出,发现两个环境中 docker-compose 生成的容器的名称不一样,在他的环境中,容器名称最前面中的横线(也就是连字符,-)不见了!因为 docker-compose 默认的命名规范是 <project>_<service>_<index>[_<slug>]
,也就是说,他的 docker-compose 把最前面的 project name 里的连字符给吃掉了。
查了一下 docker-compose 的源码。我的环境是 v1.29.2,:
def get_project_name(working_dir, project_name=None, environment=None):
def normalize_name<