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

Docker部署.NET API遇Uploads/Images目录不存在异常的解决

.NET API Docker容器化时遭遇DirectoryNotFoundException(/app/Uploads/Images/目录不存在)

问题场景

我在将自己的.NET API容器化时遇到了图片存储目录的问题:图片未直接存入数据库,而是保存在API项目的Uploads/Images目录下,通过读取数据库中存储的路径来获取图片。执行启动容器的命令后触发了目录不存在的异常。

执行命令

docker run -p 5192:5192 --name eres-api-container eres-api

异常信息

Unhandled exception. System.IO.DirectoryNotFoundException: /app/Uploads/Images/
   at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root, ExclusionFilters filters)
   at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root)
   at Program.<Main>$(String[] args) in /src/e-Res/Program.cs:line 124

原Dockerfile内容

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 5192
ENV ASPNETCORE_URLS=http://+:5192


FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY . .

FROM build AS publish
RUN dotnet publish "e-Res/e-Res.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .

ENTRYPOINT ["dotnet", "e-Res.dll"]

解决方法

已解决,在Dockerfile的final阶段添加目录复制指令即可。修改后的Dockerfile如下:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 5192
ENV ASPNETCORE_URLS=http://+:5192


FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY . .

FROM build AS publish
RUN dotnet publish "e-Res/e-Res.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
# 复制本地项目中的Uploads/Images目录到容器内对应路径
COPY ./e-Res/Uploads/Images ./Uploads/Images

ENTRYPOINT ["dotnet", "e-Res.dll"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:21:40