docker-compose文件配置no_cache报错,正确语法是怎样的?
Docker Compose配置no_cache报错的解决办法
问题描述
我想指定Docker构建容器时不使用缓存。已知docker-compose 2.4.0版本已支持--no-cache命令行参数,官方Compose文件build参考文档也列出了no_cache配置项,但在compose.yaml的build段落中添加no_cache: true后,出现错误:
ERROR: The Compose file '/opt/docker-compose.yaml' is invalid because: services.pleroma.build contains unsupported option: 'no_cache'
请问是语法错误,还是目前无法在Compose文件中直接配置该选项?我的完整配置如下:
pleroma: image: pleroma hostname: pleroma container_name: pleroma networks: dockerapps: ipv4_address: 172.18.0.77 healthcheck: test: [ "CMD-SHELL", "wget -q --spider --proxy=off localhost:4000 || exit 1", ] restart: unless-stopped build: context: /opt/pleroma/. dockerfile: /opt/pleroma/Dockerfile no_cache: true # Feel free to remove or override this section # See 'Build-time variables' in README.md args: - "UID=1000" - "GID=1000" - "PLEROMA_VER=develop" volumes: - ./uploads:/var/lib/pleroma/uploads - ./static:/var/lib/pleroma/static - ./config.exs:/etc/pleroma/config.exs:ro - ./config-override.exs:/var/lib/pleroma/config.exs:ro env_file: - /opt/pleroma/.docker.env depends_on: - pleroma_db
原因与解决办法
核心问题是Docker Compose的两个版本分支兼容性差异:
- 旧版
docker-compose(Python实现,比如你用的2.4.0):不支持在Compose文件的build块中配置no_cache,只能通过命令行参数实现无缓存构建。 - 新版
docker compose(Go实现,集成到Docker CLI,版本号如v2.20.0+):支持build.no_cache配置项,但需要确保你用的是这个新版工具。
具体操作方案
方案1:继续用旧版docker-compose
删掉Compose文件里的no_cache: true,构建时加上命令行参数:
docker-compose build --no-cache pleroma docker-compose up -d
方案2:升级到新版docker compose
- 先确认版本:执行
docker compose version,如果版本是v2.20.0或更高,就可以用这个方案。 - 保留Compose文件中的
no_cache: true,直接执行构建启动:
docker compose up -d --build
注意事项
- 别把
docker-compose(旧命令,带横杠)和docker compose(新命令,空格)搞混,两者的配置支持、命令参数都有差异。 - 官方文档里提到的
no_cache配置项是针对新版Compose规范的,旧版Python实现的工具不兼容这个配置。
内容的提问来源于stack exchange,提问作者sucks_at_programming
相关产品推荐
相关产品推荐

