这是我第一次尝试在我的 asp.net core 5.0 应用程序中运行 docker 镜像。我在 Dockerfile 中添加了以下配置。
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["Shopping.Client/Shopping.Client.csproj", "Shopping.Client/"]
RUN dotnet restore "Shopping.Client/Shopping.Client.csproj"
COPY . .
WORKDIR "/src/Shopping.Client"
RUN dotnet build "Shopping.Client.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Shopping.Client.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Shopping.Client.dll"]
我正在尝试使用以下代码访问位于我的
wwwroot
文件夹中的文件:private async Task<T> ReadAsync<T>(string filePath)
{
using FileStream stream = File.OpenRead(filePath);
return await JsonSerializer.DeserializeAsync<T>(stream);
}
public async Task<List<Product>> GetProducts()
{
var filePath = System.IO.Path.Combine(_env.ContentRootPath, @"wwwroot\Db\product.json");
return await ReadAsync<List<Product>>(filePath);
}
当我运行应用程序并尝试访问wwwroot中的文件时,出现以下错误:
执行请求时发生未处理异常。
System.IO.FileNotFoundException: 找不到文件 “/app/wwwroot/Db\product.json”。 文件名: “/app/wwwroot/Db\product.json”
我是否需要在docker文件中包含任何特殊内容以复制wwwroot文件夹,或者我需要考虑docker镜像中的文件路径添加文件路径?
/
,因为它也适用于Windows系统。 - Lei Yangwwwroot/Db/product.json
,现在可以正常运行了。 - Aakash Bashyal