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

Docker COPY指令无法找到ASP.NET Core 2.1项目dotnet publish生成的release文件

问题根因

  • 发布产物输出路径不匹配:执行dotnet publish未指定具体项目时,每个项目的发布产物会输出到各自项目目录下的out文件夹,而非构建环境根目录的out文件夹。你执行COPY --from=build /out .时是从构建阶段根目录找out文件夹,自然找不到对应文件。
  • 项目文件复制错误:Dockerfile中存在一行复制逻辑错误,把ClassLibraryProject3的项目文件错误复制到了ClassLibraryProject1的目录下,会留下后续编译运行的隐患:
# 错误写法
COPY ./ClassLibraryProject3/ClassLibraryProject3.csproj ./ClassLibraryProject1/

解决方案

1. 修正项目文件复制逻辑

把错误的复制行改成正确的路径:

COPY ./ClassLibraryProject3/ClassLibraryProject3.csproj ./ClassLibraryProject3/

2. 调整发布命令,统一输出路径

指定启动项目作为发布目标,同时明确输出到构建阶段根目录的out文件夹,修改dotnet publish命令为:

RUN dotnet publish ./APIProject/APIProject.csproj -c Release -o /out

修改后原有COPY --from=build /out .逻辑不需要改动即可正常生效。

如何查看-o out文件夹的内容

你可以在dotnet publish步骤之后增加目录查询命令,构建过程中会直接输出对应目录的文件列表:

  • 如果使用Windows容器(从你的日志路径看是Windows容器),添加命令:
# 查看根目录下所有out文件夹路径
RUN dir /s /b C:\*out*
# 直接查看API项目的out目录内容
RUN dir C:\APIProject\out
  • 如果使用Linux容器,添加命令:
# 查看所有out文件夹路径
RUN find / -name "out"
# 查看API项目的out目录内容
RUN ls -la /APIProject/out

关于基础镜像版本的说明

你当前使用的mcr.microsoft.com/dotnet/core/aspnet:2.1运行时镜像和mcr.microsoft.com/dotnet/core/sdk:2.1SDK镜像版本是兼容的,你的项目目标框架为netcoreapp2.0,2.1版本的SDK和运行时向下兼容2.0版本的项目,不会出现版本适配问题。

修正后完整Dockerfile参考

FROM mcr.microsoft.com/dotnet/core/aspnet:2.1 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
WORKDIR /src

COPY *.sln ./
COPY ./APIProject/APIProject.csproj ./APIProject/
COPY ./ClassLibraryProject1/ClassLibraryProject1.csproj ./ClassLibraryProject1/
COPY ./ClassLibraryProject2/ClassLibraryProject2.csproj ./ClassLibraryProject2/
COPY ./ClassLibraryProject3/ClassLibraryProject3.csproj ./ClassLibraryProject3/
COPY ./TestProject/TestProject.csproj ./TestProject/

RUN dotnet restore

COPY . .

RUN dotnet publish ./APIProject/APIProject.csproj -c Release -o /out

FROM base
WORKDIR /app
COPY --from=build /out .
ENTRYPOINT ["dotnet", "APIProject.dll"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:06:04