【问题标题】:ASP.NET Core app for Raspberry Pi using Docker in VS2017用于 Raspberry Pi 的 ASP.NET Core 应用程序在 VS2017 中使用 Docker
【发布时间】:2023-04-07 00:48:01
【问题描述】:

我想将我的 Asp.Net Core 2.1 应用程序部署到我的 Raspberry Pi 3。

这是场景: 我在 VS 2017 中将应用程序开发为 docker 包装的应用程序

Raspberry Pi 正在运行安装了 docker 的 Raspbian。 该应用程序在开发机器上运行良好,但是当我将映像部署到 Raspberry 并尝试在那里运行时,我收到了错误:

standard_init_linux.go:190: exec user process caused "exec format error"

我认为这是因为我的图像架构错误(英特尔而不是 arm),但我不知道如何解决这个问题。请指教。

这是我的 docker 文件:

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["WebApplication4/WebApplication4.csproj", "WebApplication4/"]
RUN dotnet restore "WebApplication4/WebApplication4.csproj"
COPY . .
WORKDIR "/src/WebApplication4"
RUN dotnet build "WebApplication4.csproj" -c Release -o /app

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

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebApplication4.dll"]

【问题讨论】:

    标签: asp.net docker asp.net-core raspberry-pi


    【解决方案1】:

    你试过了吗?

    # This Dockerfile uses nightly preview builds for .NET Core
    # It will be updated to .NET Core 2.2 shortly
    FROM microsoft/dotnet-nightly:2.1-sdk AS build
    WORKDIR /app
    
    # copy csproj and restore as distinct layers
    COPY *.sln .
    COPY aspnetapp/*.csproj ./aspnetapp/
    RUN dotnet restore
    
    # copy everything else and build app
    COPY aspnetapp/. ./aspnetapp/
    WORKDIR /app/aspnetapp
    RUN dotnet publish -c Release -o out
    
    
    FROM microsoft/dotnet-nightly:2.1-aspnetcore-runtime AS runtime
    WORKDIR /app
    COPY --from=build /app/aspnetapp/out ./
    ENTRYPOINT ["dotnet", "aspnetapp.dll"]
    

    这是官方dockerhub建议的。还有一些带有arm32标签的图片。

    【讨论】:

    • 可能我做错了什么,但使用夜间构建并没有任何区别。我也尝试过 arm 图像,但我无法在我的 windows 机器上构建图像。
    • @AlexK 您是否尝试在饼图本身上构建手臂图像?