在VS2019中将ASP.NET Core Docker镜像从x86部署到ARM(Raspberry Pi)

mhd8tkvw  于 12个月前  发布在  Docker
关注(0)|答案(2)|浏览(206)

我在Raspberry Pi 4上安装了Docker,我想通过Docker Hub将ASP.NET Core 3.1应用程序(Razor pages电影示例应用程序)部署到我的Pi上。当我从Docker Hub中提取映像并尝试运行它时,我得到错误

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

字符串
我在Windows 10 x64 PC上构建了我的Docker镜像。当在我的Pi上检查Docker镜像时,我可以看到架构是错误的

"Architecture": "amd64",


应该可以在x64机器since last year上构建一个针对ARM的Docker镜像,但不知何故,我的镜像是针对x64构建的。

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

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

FROM build AS publish
RUN dotnet publish "RazorMovies.csproj" -c Release -o /app/publish -r linux-arm

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


我已经将VS 2019中Build -> Publish中的目标运行时设置更改为目标linux-arm,如下图所示。
x1c 0d1x的数据
我知道我的Pi能够通过Docker运行ASP.NET Core应用程序,我已经通过Docker运行了相同的应用程序,使用的例子是here。该图像显示架构为arm而不是amd 64。

docker run --rm -it -p 8000:80 mcr.microsoft.com/dotnet/core/samples:aspnetapp


我的镜像是针对ARM而不是x64构建的,我缺少什么?

tyky79it

tyky79it1#

找到了解决方案,我还需要改变基地,

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

字符串

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim-arm32v7 AS base

6rqinv9w

6rqinv9w2#

Check out this page for different docker image tags for dotnet https://hub.docker.com/_/microsoft-dotnet-sdk/
我只是尝试了arm32部分中的一个,因为我无法让dotnet restore运行(即使没有依赖项要恢复)。

相关问题