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

Docker容器复制主机本地文件问题求助(VS2022环境)

问题分析与解决方案

你的Dockerfile存在两个核心问题导致文件复制失败:

  1. 错误使用主机绝对路径:Docker的COPY指令只能访问构建上下文(即Dockerfile所在目录及其子目录)内的文件,无法直接读取主机的C://text.txt这类绝对路径。而且Linux容器内部使用类Unix路径格式,不存在C://这种Windows盘符路径。

  2. 未将文件传递到最终运行镜像:即使你在build阶段复制了文件,最终的final阶段仅从publish阶段复制了应用发布文件,之前阶段的文件不会自动继承到最终镜像中。

修正步骤

1. 调整文件位置

将主机上的test.txt放到Dockerfile所在的目录(或其子目录,比如项目根目录),确保它在构建上下文范围内。

2. 修改Dockerfile

以下是修正后的Dockerfile,以将test.txt复制到容器的/data目录(自定义非应用路径)为例:

FROM mcr.microsoft.com/dotnet/runtime:7.0 AS base
WORKDIR /app

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY ["Testing/Testing.csproj", "Testing/"]
RUN dotnet restore "Testing/Testing.csproj"
COPY . .
WORKDIR "/src/Testing"
RUN dotnet build "Testing.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Testing.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
# 创建目标目录(如果镜像中不存在)
RUN mkdir -p /data
# 从构建上下文复制test.txt到容器的/data目录
COPY test.txt /data/test.txt
ENTRYPOINT ["dotnet", "Testing.dll"]

关键说明

  • 如果test.txt位于Testing子目录下,复制指令应改为:COPY ["Testing/test.txt", "/data/test.txt"]
  • 目标路径可以根据需求修改,比如/config/test.txt,只要确保通过RUN mkdir -p创建对应的父目录(避免路径不存在导致复制失败)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:13:19