远程访问页面时出现“Failed to start 'npm'”错误消息

Cod*_*512 2 docker asp.net-core

我有一个 ASP.NET Core 应用程序在 Raspberry Pi 上的 docker 中运行,当我尝试通过 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"]
Run Code Online (Sandbox Code Playgroud)

知道为什么当我在另一台计算机上连接时失败吗?

谢谢!

Tao*_*hou 7

对于此错误,表明您没有在映像中安装节点。

对于内置的 ms docker 镜像,默认情况下没有安装 Node,您可以尝试使用如下命令来安装 Node。

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
Run Code Online (Sandbox Code Playgroud)

更新

看来你是在生产环境中。之所以在删除时起作用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");
    }
});
Run Code Online (Sandbox Code Playgroud)

对于开发环境,它将使用spa.UseAngularCliServer(npmScript: "start");.