Linux Docker上的.NET Core:对路径的访问被拒绝

Linux Docker上的.NET Core:对路径的访问被拒绝,linux,docker,.net-core,Linux,Docker,.net Core,我有一个.Net核心web应用程序,它托管在CentOS机器上。 一切正常,除了调用服务器上需要特定文件的函数(它组合了多个图像并生成PDF)外,我得到以下错误: System.UnauthorizedAccessException:无法访问路径“[path]” 否认 该项目是使用VisualStudio自动生成的dockerfile和docker compose文件构建的 内容如下: Dockerfile FROM mcr.microsoft.com/dotnet/core/aspnet:3.

我有一个.Net核心web应用程序,它托管在CentOS机器上。 一切正常,除了调用服务器上需要特定文件的函数(它组合了多个图像并生成PDF)外,我得到以下错误:

System.UnauthorizedAccessException:无法访问路径“[path]” 否认

该项目是使用VisualStudio自动生成的dockerfile和docker compose文件构建的

内容如下:

Dockerfile

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["lifeandme-v2/lifeandme-v2.csproj", "lifeandme-v2/"]
RUN dotnet restore "lifeandme-v2/lifeandme-v2.csproj"
COPY . .
WORKDIR "/src/lifeandme-v2"
RUN dotnet build "lifeandme-v2.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "lifeandme-v2.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
COPY . /app/publish
ENTRYPOINT ["dotnet", "lifeandme-v2.dll"]
应用程序在运行时试图访问的文件位于我的项目根目录下,因此我添加了倒数第二行,以便将项目根目录的全部内容复制到最终容器中

我还尝试在容器运行时输入它,并将整个/app文件夹的chmod更改为777,但仍然出现相同的错误。在最后一行之前,我尝试将此添加到dockerfile中:

RUN chmod -R 777 /app

同样的错误。

我面临同样的问题。知道如何解决吗?我的问题是由于代码中的文件地址错误。您可以使用
docker exec-it[container name]bash
命令输入正在运行的docker容器,并检查您试图访问的文件是否确实存在于您要查找的地址中。嘿,感谢您的响应!很好,你修好了。对于将来遇到这个问题的人来说,我的问题是一些实际的权限问题。因为我想在我的容器中包含dotnet工具,所以我使用了构建映像(sdk:3.1-buster)作为最终版本的基础,而不是默认版本(aspnet:3.1-buster-slim)。我想出了一些其他的方法来满足我的需要,并将其恢复为默认配置,它就可以工作了。