对于那些已经使用 Docker Compose 一段时间的人来说,docker-compose.yml 文件顶部的 “version” 属性可能很熟悉。然而,时代已经改变。该属性现已正式被视为过时。
请参考以下 Docker Compose 文件:
version: '3.9'
services:
db:
image: postgres:10.0-alpine
volumes:
- ./db:/docker-entrypoint-initdb.d/
api:
build: api
image: dockersamples/wordsmith-api
deploy:
replicas: 5
web:
build: web
image: dockersamples/wordsmith-web
ports:
- "8080:80"
如果尝试运行 docker compose up,可能会看到以下警告:
WARN[0000] /Users/moby/compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] Running 3/3
⠹ api [⠀⠀⠀⠀] Pulling 5.3s
⠹ web [⠀⠀⠀⠀] Pulling 5.3s
⠹ db [⣿⣿⣿⠀⠀⠀⠀⠀
为什么它被视为过时?
最初,version 属性用于指定 Compose 文件的架构版本,这对向后兼容性很有帮助。然而,Docker Compose 现在已经发展,默认使用最新的 Compose 规范。这意味着指定版本是多余的,甚至会导致警告。
Docker Compose 现在如何处理 Compose 文件?
Docker Compose 主要依赖 Compose 规范来解释您的 docker-compose.yml 文件。该规范不断更新,以包括新功能和改进。当您使用 Docker Compose 时,它会自动将最新支持的架构应用到您的文件中。
这对您意味着什么?
-
移除 version 属性:可以安全地从 docker-compose.yml 文件中删除 version 属性,这不会影响 Compose 文件的功能。
-
使用最新的 Compose 规范:利用最新的 Compose 规范提供的新功能和改进。
-
忽略警告消息:如果您的文件中仍然有 version 属性,您可能会看到警告消息,但这些消息可以安全地忽略。
结论
虽然 version 属性在过去可能是必不可少的,但在现代 Docker Compose 工作流中已不再需要。通过删除它,您可以简化 Compose 文件并保持最新功能。
请记住:应重点关注 Compose 文件的内容,定义您的服务、网络、卷和其他组件,而不是特定的版本。
想要了解更多关于最新 Compose 规范的特定功能吗?
参考:
全文完!
如果你喜欢我的文章,欢迎关注我的微信公众号:deliverit