docker-compose 容器名称中横线(连字符,-)突然消失的问题的可能解决办法

docker-compose 容器名称中横线(连字符,-)突然消失的问题的可能解决办法,第1张

docker-compose 容器名称中横线(连字符,-)突然消失的问题的可能解决办法

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

查了一下 docker-compose 的源码。我的环境是 v1.29.2,:

def get_project_name(working_dir, project_name=None, environment=None):
    def normalize_name(name):
        return re.sub(r'[^-_a-z0-9]', '', name.lower())

而他的环境是 v1.17.1,估计是用 apt 安装的:

def get_project_name(working_dir, project_name=None, environment=None):
    def normalize_name(name):
        return re.sub(r'[^a-z0-9]', '', name.lower())

可以看出,新版本在生成 project name 的时候选择保留了连字符,而老版本的没有。然后这个变更的时间是 2018 年,v1.17.1 是 2017 年的包,所以出了这个问题。

看 github 上有人讨论这个问题:https://github.com/docker/compose/issues/4002 和 https://github.com/docker/compose/pull/572,给出的原因居然是因为觉得混用连字符和下划线会很丑……

解决办法就是升级到新版本。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5714536.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存