Docker Swarm部署报错Additional property pull_policy is not allowed咨询
问题原因
pull_policy属于Docker Compose工具的专属配置字段,仅在使用docker-compose命令本地启动项目时生效。虽然你在配置文件中声明了3.9的高版本号,但Docker Swarm的stack部署逻辑从未支持该字段,执行docker stack deploy时解析配置就会抛出未知属性的错误。
解决方法
方案1:直接调整配置和部署命令
- 删除
docker-compose.yml中chat-app-api服务下的pull_policy: always配置行 - 如果需要保留每次部署强制拉取最新镜像的逻辑,在部署命令中添加
--resolve-image always参数即可,效果和原pull_policy: always完全一致:
docker stack deploy -c docker-compose.yml -c docker-compose.prod.yml --resolve-image always chatappapi
方案2:拆分多环境配置
如果你的docker-compose.yml需要同时兼容本地开发和Swarm生产部署,可将仅开发环境需要的pull_policy配置挪到本地开发专用的覆盖配置文件(例如docker-compose.dev.yml)中,基础配置文件不保留该字段。部署到Swarm时仅加载基础配置和生产覆盖配置,即可避开字段校验错误。
内容的提问来源于stack exchange,提问作者Labrador
相关产品推荐
相关产品推荐

