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
相关产品推荐
相关产品推荐

