我有一个在Raspberry Pi上的docker中运行的ASP.NET Core应用程序,当我尝试通过Pi进行访问时,它显示的很好。当我尝试在本地网络上访问它时,出现以下异常页面:
这是我的Dockerfile:
FROM microsoft/dotnet:2.2-sdk AS builder
WORKDIR /source
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
RUN apt-get install -y nodejs
RUN npm --version
COPY *.csproj .
RUN dotnet restore
COPY ./ ./
RUN dotnet publish "./AspNetCoreApp.csproj" --output "./dist" --configuration Debug --no-restore
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
WORKDIR /app
COPY --from=builder /source/dist .
EXPOSE 80
ENTRYPOINT ["dotnet", "AspNetCoreApp.dll"]
有什么想法为什么我在另一台计算机上连接时会失败?
谢谢!
答案 0 :(得分:1)
对于此错误,表明您未在映像中安装节点。
对于内置的ms docker映像,默认情况下它未安装节点,您可以尝试使用以下命令来安装节点。
ROM mcr.microsoft.com/dotnet/core/aspnet:3.0-stretch-slim AS base
# BEGIN MODIFICATION - Node is needed for development (but not production)
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
RUN apt-get install --assume-yes nodejs
# END MODIFICATION
WORKDIR /app
EXPOSE 80
EXPOSE 443
更新
似乎您处于生产环境中。由于它在删除environment: - ASPNETCORE_ENVIRONMENT=Development
时起作用的原因,是由
app.UseSpa(spa =>
{
// To learn more about options for serving an Angular SPA from ASP.NET Core,
// see https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript: "start");
}
});
对于开发环境,它将使用spa.UseAngularCliServer(npmScript: "start");
。
答案 1 :(得分:0)
删除
environment: - ASPNETCORE_ENVIRONMENT=Development
从compose.override文件中的修复了所有这些问题。我不知道为什么会这样。