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

如何从Windows共享D盘复制文件到Docker镜像?ADD指令执行失败求助

解决Docker构建时无法访问Windows D盘文件的问题

从你的错误信息来看,核心问题是Docker构建上下文的限制,以及Windows路径在Docker环境里的写法不对。Docker执行ADD指令时,只会去你指定的构建上下文目录(默认是执行docker build命令时的当前目录)里找文件,而你直接写了d:/...这种Windows绝对路径,Docker会把它当成上下文目录下的子目录,自然找不到对应的文件。

下面给你几个可行的解决方案,按推荐程度排序:

方案一:把文件放到构建上下文目录(最稳妥)

这是Docker构建的标准做法,能从根源避免路径问题:

  • 把d:/Application_Build/spring-tournament-portal-0.0.1-SNAPSHOT整个文件夹复制到你的Dockerfile所在的目录(比如可以建个build-artifacts子目录专门存放构建产物)
  • 修改Dockerfile里的ADD指令为相对路径:
    ADD ./build-artifacts/${ARTIFACT}-${VERSION} /opt/tomcat/webapps/${ARTIFACT}-${VERSION}
    
  • 执行docker build时,确保当前工作目录是Dockerfile所在的目录,这样Docker就能在上下文里顺利找到你的文件。

方案二:指定构建上下文为D盘的目标目录(适合不想复制文件的场景)

如果你不想复制文件,可以直接把构建上下文指向D盘的Application_Build目录:

  • 假设你的Dockerfile在C:/Projects/my-app/Dockerfile,执行构建命令时这样写:
    docker build -t my-tomcat-app -f C:/Projects/my-app/Dockerfile d:/Application_Build
    
  • 此时Docker的构建上下文是d:/Application_Build,所以Dockerfile里的ADD指令可以简化为:
    ADD ./${ARTIFACT}-${VERSION} /opt/tomcat/webapps/${ARTIFACT}-${VERSION}
    
    注意:这种方式会把d:/Application_Build下的所有文件都发送给Docker daemon,如果这个目录很大,构建速度会明显变慢。

方案三:用BuildKit挂载宿主机路径(适合大文件/频繁更新的场景)

如果你的构建产物很大,或者不想每次都复制文件,可以用Docker的BuildKit特性直接挂载宿主机路径:

  1. 先开启BuildKit:
    • Windows CMD:set DOCKER_BUILDKIT=1
    • Windows PowerShell:$env:DOCKER_BUILDKIT=1
    • 或者在Docker Desktop的设置里,找到Builds选项,勾选Use BuildKit for building
  2. 修改Dockerfile,把ADD指令换成带挂载的RUN命令:
    RUN --mount=type=bind,source=/d/Application_Build/${ARTIFACT}-${VERSION},target=/tmp/app \
        cp -r /tmp/app /opt/tomcat/webapps/${ARTIFACT}-${VERSION}
    
    这里通过--mount把宿主机的D盘路径直接挂载到构建容器的/tmp/app目录,再复制到目标路径,不需要把文件加入构建上下文。

额外注意事项

  • 确保Docker Desktop已经共享了D盘:打开Docker Desktop设置 -> Resources -> File Sharing,勾选D盘,点击Apply & Restart生效。
  • 构建时要正确传递环境变量,比如ARTIFACT和VERSION,可以用--build-arg参数:
    docker build --build-arg ARTIFACT=spring-tournament-portal --build-arg VERSION=0.0.1-SNAPSHOT ...
    

内容的提问来源于stack exchange,提问作者sdindiver

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:09:02