You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 11:10:30