Docker Compose无法使用.secret扩展名的文件作为秘钥?
问题分析与解决建议
Docker官方文档并未对secret文件的扩展名做强制约定,你遇到的现象大概率不是通用Bug,而是特定环境组合下的兼容性问题。结合你的WSL+Docker Desktop环境,具体分析和解决办法如下:
可能的原因
- WSL文件系统与Docker Desktop共享机制的隐性冲突:部分扩展名可能被WSL或Docker的文件监控/同步逻辑特殊处理,导致
.secret后缀的文件未被正确识别为普通文件。 - Docker Compose特定版本的解析异常:你使用的Compose v2.29.7-desktop.1可能存在对
.secret后缀的误判,比如将其识别为目录相关标识而非普通文件。
解决办法
显式指定secret文件路径
在compose.yml中不要依赖secret名称与文件名的默认匹配,而是显式声明file字段:secrets: token: file: ./azure-devops-token.secret这种显式配置可绕过可能的自动匹配逻辑错误。
调整文件存放路径
创建子目录(如./secrets)存放.secret文件,再在compose.yml中指定路径:secrets: token: file: ./secrets/azure-devops-token.secret避免根目录下的扩展名触发特殊处理逻辑。
手动创建secret验证
在WSL终端直接用Docker命令创建secret,验证文件本身是否可被识别:docker secret create token ./azure-devops-token.secret若命令成功,说明问题出在Docker Compose的解析逻辑;若失败,则大概率是WSL文件系统或Docker集成设置的问题。
检查Docker Desktop集成设置
打开Docker Desktop设置,进入Resources > WSL Integration,确保对应Ubuntu发行版已启用集成,且无文件过滤规则限制。
后续建议
若以上方法无效,可在Docker官方GitHub仓库提交Issue,附上完整环境信息、compose.yml内容及错误日志,帮助官方排查是否为特定版本的隐性Bug。
内容的提问来源于stack exchange,提问作者Rui Jarimba
相关产品推荐
相关产品推荐

