我在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构建的,我缺少什么?
2条答案
按热度按时间tyky79it1#
找到了解决方案,我还需要改变基地,
字符串
到
型
6rqinv9w2#
Check out this page for different docker image tags for dotnet https://hub.docker.com/_/microsoft-dotnet-sdk/
我只是尝试了arm32部分中的一个,因为我无法让dotnet restore运行(即使没有依赖项要恢复)。