Windows 10下Docker Compose构建Secrets无法注入Dockerfile求助
Docker Compose构建时Secrets在Windows 10 Docker Desktop中无法注入的问题排查
在Windows 10全新安装的Docker Desktop中执行docker compose build时,构建时Secrets无法注入Dockerfile,但相同配置在Ubuntu虚拟机中可正常工作。以下是相关配置及版本信息:
配置文件
docker-compose.yml
services: ssh: image: build-test-secret build: context: . secrets: - mysecret secrets: mysecret: file: ./secret.txt
Dockerfile
FROM alpine RUN echo "foo" > /tmp/expected RUN --mount=type=secret,id=mysecret cat /run/secrets/mysecret > /tmp/actual RUN diff /tmp/expected /tmp/actual
secret.txt
foo
版本信息
Windows 10 上的docker version输出:
Client: Cloud integration: v1.0.35+desktop.5 Version: 24.0.6 API version: 1.43 Go version: go1.20.7 Git commit: ed223bc Built: Mon Sep 4 12:32:48 2023 OS/Arch: windows/amd64 Context: default Server: Docker Desktop 4.25.0 (126437) Engine: Version: 24.0.6 API version: 1.43 (minimum version 1.12) Go version: go1.20.7 Git commit: 1a79695 Built: Mon Sep 4 12:32:16 2023 OS/Arch: linux/amd64 Experimental: true containerd: Version: 1.6.22 GitCommit: 8165feabfdfe38c65b599c4993d227328c231fca runc: Version: 1.1.8 GitCommit: v1.1.8-0-g82f18fe docker-init: Version: 0.19.0 GitCommit: de40ad0
Windows 10 上的docker compose version输出:
Docker Compose version v2.23.0-desktop.1
问题原因及解决方案
1. Windows文件系统与WSL2后端的路径/权限问题
若Docker Desktop使用WSL2后端,存放在Windows本地文件系统(如C:\目录下)的文件,在WSL环境中可能出现权限不足或路径解析异常,导致构建时无法读取secret文件。
解决步骤:
- 将项目文件夹迁移至WSL2的Linux文件系统内(例如
~/projects/目录,可通过\\wsl$\<分发版名称>路径访问或直接在WSL终端操作)。 - 重新执行
docker compose build,此时Secret应能正常读取和注入。
2. Docker Desktop文件共享配置检查
确认Docker Desktop的文件共享设置已包含项目所在的Windows目录:
- 打开Docker Desktop设置 → Resources → File Sharing。
- 勾选项目所在的驱动器(如C盘),点击Apply & Restart。
- 注意:即便勾选了驱动器,Windows文件系统的权限仍可能引发问题,优先推荐使用WSL文件系统。
3. Compose版本兼容性问题
部分Desktop版本的Compose存在构建Secrets的兼容性bug,可尝试升级Docker Desktop至最新稳定版:
- 打开Docker Desktop设置 → Software Updates,检查并安装最新版本。
- 升级后重新测试构建流程。
4. Secret文件换行符问题验证
Windows默认换行符为CRLF,而Linux为LF,若secret.txt包含多余CR字符,会导致diff命令失败:
- 使用文本编辑器(如VS Code)将secret.txt的换行符改为LF。
- 保存后重新执行构建。
内容的提问来源于stack exchange,提问作者dotarj
相关产品推荐
相关产品推荐

