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

Docker镜像构建后容器缺失Assets文件夹问题求助

问题:容器中缺失src根目录的Assets文件夹

感谢@ziyang-liu-msft的帮助,我已成功将镜像部署至Azure镜像仓库。现在发现拉取镜像并启动容器后,src根目录下的Assets文件夹(包含Fonts子文件夹及字体文件)缺失,其他所需文件夹均存在于镜像中。已通过命令docker run -it --entrypoint sh imagename进入容器确认该文件夹确实缺失。

我的Dockerfile内容如下:

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443


# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
ARG ACCESSTOKEN
WORKDIR /src
COPY . .
RUN dotnet restore "./appfolder/app.csproj" --configfile "./appname/nuget.config"
WORKDIR "/src/appfolder"
RUN dotnet build "./app.csproj" -c $BUILD_CONFIGURATION -o /app/build  --no-restore

# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./app.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false  --no-restore

# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "app.dll"]

请问我究竟遗漏了什么配置?


解决方案
  • 核心原因:Assets文件夹没有被dotnet publish纳入发布输出目录。.NET项目默认只会打包被项目引用、或是在项目文件中配置了「复制到输出目录」属性的文件。

  • 方案一:修改项目配置文件(推荐)
    打开你的app.csproj文件,添加以下配置,确保Assets文件夹及其子文件会被复制到发布目录:

    <ItemGroup>
      <!-- 路径根据Assets相对于csproj的位置调整,示例中Assets在src根目录,csproj在src/appfolder下 -->
      <None Include="..\Assets\**" CopyToOutputDirectory="PreserveNewest" />
    </ItemGroup>
    

    这样dotnet publish时会自动把Assets文件夹打包到/app/publish目录,最终镜像的/app目录下就会包含该文件夹。

  • 方案二:在Dockerfile中手动复制(临时方案)
    如果不想修改项目文件,可以在Dockerfile的final阶段新增复制步骤,直接从build阶段把Assets文件夹拷贝到容器中:

    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app/publish .
    # 新增这行,将build阶段的Assets文件夹复制到容器的/app目录下
    COPY --from=build /src/Assets ./Assets
    ENTRYPOINT ["dotnet", "app.dll"]
    

    注意:这种方式仅在容器环境生效,本地发布项目时不会包含Assets文件夹,适合临时场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 04:11:14